{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 车流量预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import random\n",
    "from IPython import display\n",
    "from matplotlib import pyplot as plt\n",
    "import torch.utils.data as Data\n",
    "from PIL import Image\n",
    "import os\n",
    "from torch import nn\n",
    "import torch.optim as optim\n",
    "from torch.nn import init\n",
    "import torch.nn.functional as F\n",
    "import time\n",
    "import pandas as pd\n",
    "from sklearn.utils import shuffle\n",
    "import math\n",
    "from sklearn.metrics import mean_squared_error as mse, mean_absolute_error as mae\n",
    "train_path = './出租车流量预测数据集/NYC-stdn/volume_train.npz'\n",
    "test_path = './出租车流量预测数据集/NYC-stdn/volume_test.npz'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "volume_train = np.load(open(train_path, \"rb\"))[\"volume\"]\n",
    "volume_test = np.load(open(test_path, \"rb\"))[\"volume\"]\n",
    "volume_train = np.sum(volume_train.reshape(1920, 200, 2, 1), axis=2)\n",
    "volume_test = np.sum(volume_test.reshape(960, 200, 2, 1), axis=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1920, 200, 1), (960, 200, 1))"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "volume_train.shape, volume_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1214e3f2bc8>]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_plot_in = volume_train[:, 1]\n",
    "plt.plot(range(volume_train.shape[0]), data_plot_in, c='r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# min-max归一化 将结果映射在[0, 1]\n",
    "dmin, dmax = volume_train.min(), volume_train.max()\n",
    "volume_train = (volume_train - dmin) / (dmax - dmin)\n",
    "\n",
    "dmin, dmax = volume_test.min(), volume_test.max()\n",
    "volume_test = (volume_test - dmin) / (dmax - dmin)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义固定长度滑动窗口"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sliding_window(seq, window_size):\n",
    "    result = []\n",
    "    for i in range(len(seq) - window_size):\n",
    "        result.append(seq[i: i + window_size])\n",
    "    return result\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "加载数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1913, 7, 200, 1) (953, 7, 200, 1)\n",
      "[[[[0.04876894]\n",
      "   [0.03219697]\n",
      "   [0.00852273]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.00047348]\n",
      "   [0.        ]]\n",
      "\n",
      "  [[0.09280303]\n",
      "   [0.08854167]\n",
      "   [0.01609848]\n",
      "   ...\n",
      "   [0.00189394]\n",
      "   [0.00378788]\n",
      "   [0.00757576]]\n",
      "\n",
      "  [[0.109375  ]\n",
      "   [0.07481061]\n",
      "   [0.01515152]\n",
      "   ...\n",
      "   [0.00236742]\n",
      "   [0.00189394]\n",
      "   [0.0094697 ]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.07339015]\n",
      "   [0.0842803 ]\n",
      "   [0.01325758]\n",
      "   ...\n",
      "   [0.00189394]\n",
      "   [0.00331439]\n",
      "   [0.00710227]]\n",
      "\n",
      "  [[0.08617424]\n",
      "   [0.07954545]\n",
      "   [0.01751894]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.00331439]\n",
      "   [0.00804924]]\n",
      "\n",
      "  [[0.08285985]\n",
      "   [0.06534091]\n",
      "   [0.01420455]\n",
      "   ...\n",
      "   [0.00331439]\n",
      "   [0.00520833]\n",
      "   [0.00568182]]]\n",
      "\n",
      "\n",
      " [[[0.09280303]\n",
      "   [0.08854167]\n",
      "   [0.01609848]\n",
      "   ...\n",
      "   [0.00189394]\n",
      "   [0.00378788]\n",
      "   [0.00757576]]\n",
      "\n",
      "  [[0.109375  ]\n",
      "   [0.07481061]\n",
      "   [0.01515152]\n",
      "   ...\n",
      "   [0.00236742]\n",
      "   [0.00189394]\n",
      "   [0.0094697 ]]\n",
      "\n",
      "  [[0.09611742]\n",
      "   [0.09375   ]\n",
      "   [0.01751894]\n",
      "   ...\n",
      "   [0.00473485]\n",
      "   [0.00094697]\n",
      "   [0.00757576]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.08617424]\n",
      "   [0.07954545]\n",
      "   [0.01751894]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.00331439]\n",
      "   [0.00804924]]\n",
      "\n",
      "  [[0.08285985]\n",
      "   [0.06534091]\n",
      "   [0.01420455]\n",
      "   ...\n",
      "   [0.00331439]\n",
      "   [0.00520833]\n",
      "   [0.00568182]]\n",
      "\n",
      "  [[0.06202652]\n",
      "   [0.0563447 ]\n",
      "   [0.00710227]\n",
      "   ...\n",
      "   [0.00047348]\n",
      "   [0.00378788]\n",
      "   [0.00804924]]]\n",
      "\n",
      "\n",
      " [[[0.109375  ]\n",
      "   [0.07481061]\n",
      "   [0.01515152]\n",
      "   ...\n",
      "   [0.00236742]\n",
      "   [0.00189394]\n",
      "   [0.0094697 ]]\n",
      "\n",
      "  [[0.09611742]\n",
      "   [0.09375   ]\n",
      "   [0.01751894]\n",
      "   ...\n",
      "   [0.00473485]\n",
      "   [0.00094697]\n",
      "   [0.00757576]]\n",
      "\n",
      "  [[0.07339015]\n",
      "   [0.0842803 ]\n",
      "   [0.01325758]\n",
      "   ...\n",
      "   [0.00189394]\n",
      "   [0.00331439]\n",
      "   [0.00710227]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.08285985]\n",
      "   [0.06534091]\n",
      "   [0.01420455]\n",
      "   ...\n",
      "   [0.00331439]\n",
      "   [0.00520833]\n",
      "   [0.00568182]]\n",
      "\n",
      "  [[0.06202652]\n",
      "   [0.0563447 ]\n",
      "   [0.00710227]\n",
      "   ...\n",
      "   [0.00047348]\n",
      "   [0.00378788]\n",
      "   [0.00804924]]\n",
      "\n",
      "  [[0.06297348]\n",
      "   [0.03787879]\n",
      "   [0.00852273]\n",
      "   ...\n",
      "   [0.00331439]\n",
      "   [0.00236742]\n",
      "   [0.0061553 ]]]\n",
      "\n",
      "\n",
      " ...\n",
      "\n",
      "\n",
      " [[[0.05871212]\n",
      "   [0.13920455]\n",
      "   [0.01893939]\n",
      "   ...\n",
      "   [0.00047348]\n",
      "   [0.00047348]\n",
      "   [0.00047348]]\n",
      "\n",
      "  [[0.0625    ]\n",
      "   [0.10369318]\n",
      "   [0.02083333]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00236742]]\n",
      "\n",
      "  [[0.06818182]\n",
      "   [0.13068182]\n",
      "   [0.01941288]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.00047348]\n",
      "   [0.00284091]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.06107955]\n",
      "   [0.11221591]\n",
      "   [0.02083333]\n",
      "   ...\n",
      "   [0.00047348]\n",
      "   [0.00047348]\n",
      "   [0.00284091]]\n",
      "\n",
      "  [[0.06628788]\n",
      "   [0.10795455]\n",
      "   [0.01089015]\n",
      "   ...\n",
      "   [0.00189394]\n",
      "   [0.        ]\n",
      "   [0.00426136]]\n",
      "\n",
      "  [[0.05492424]\n",
      "   [0.0999053 ]\n",
      "   [0.01941288]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.        ]\n",
      "   [0.00236742]]]\n",
      "\n",
      "\n",
      " [[[0.0625    ]\n",
      "   [0.10369318]\n",
      "   [0.02083333]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00236742]]\n",
      "\n",
      "  [[0.06818182]\n",
      "   [0.13068182]\n",
      "   [0.01941288]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.00047348]\n",
      "   [0.00284091]]\n",
      "\n",
      "  [[0.06297348]\n",
      "   [0.12405303]\n",
      "   [0.0217803 ]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.        ]\n",
      "   [0.00142045]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.06628788]\n",
      "   [0.10795455]\n",
      "   [0.01089015]\n",
      "   ...\n",
      "   [0.00189394]\n",
      "   [0.        ]\n",
      "   [0.00426136]]\n",
      "\n",
      "  [[0.05492424]\n",
      "   [0.0999053 ]\n",
      "   [0.01941288]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.        ]\n",
      "   [0.00236742]]\n",
      "\n",
      "  [[0.04308712]\n",
      "   [0.07386364]\n",
      "   [0.01136364]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.00094697]\n",
      "   [0.00094697]]]\n",
      "\n",
      "\n",
      " [[[0.06818182]\n",
      "   [0.13068182]\n",
      "   [0.01941288]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.00047348]\n",
      "   [0.00284091]]\n",
      "\n",
      "  [[0.06297348]\n",
      "   [0.12405303]\n",
      "   [0.0217803 ]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.        ]\n",
      "   [0.00142045]]\n",
      "\n",
      "  [[0.06107955]\n",
      "   [0.11221591]\n",
      "   [0.02083333]\n",
      "   ...\n",
      "   [0.00047348]\n",
      "   [0.00047348]\n",
      "   [0.00284091]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.05492424]\n",
      "   [0.0999053 ]\n",
      "   [0.01941288]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.        ]\n",
      "   [0.00236742]]\n",
      "\n",
      "  [[0.04308712]\n",
      "   [0.07386364]\n",
      "   [0.01136364]\n",
      "   ...\n",
      "   [0.00142045]\n",
      "   [0.00094697]\n",
      "   [0.00094697]]\n",
      "\n",
      "  [[0.03787879]\n",
      "   [0.06060606]\n",
      "   [0.01278409]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00236742]]]] [[[[0.03261415]\n",
      "   [0.02107376]\n",
      "   [0.00752634]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.00100351]\n",
      "   [0.00301054]]\n",
      "\n",
      "  [[0.02308078]\n",
      "   [0.02107376]\n",
      "   [0.00250878]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.00050176]\n",
      "   [0.00150527]]\n",
      "\n",
      "  [[0.01856498]\n",
      "   [0.02107376]\n",
      "   [0.00401405]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00150527]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.00953337]\n",
      "   [0.01154039]\n",
      "   [0.00200702]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00150527]]\n",
      "\n",
      "  [[0.00602107]\n",
      "   [0.00752634]\n",
      "   [0.00050176]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00050176]]\n",
      "\n",
      "  [[0.00903161]\n",
      "   [0.00501756]\n",
      "   [0.00250878]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.        ]]]\n",
      "\n",
      "\n",
      " [[[0.02308078]\n",
      "   [0.02107376]\n",
      "   [0.00250878]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.00050176]\n",
      "   [0.00150527]]\n",
      "\n",
      "  [[0.01856498]\n",
      "   [0.02107376]\n",
      "   [0.00401405]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00150527]]\n",
      "\n",
      "  [[0.01756147]\n",
      "   [0.00953337]\n",
      "   [0.00100351]\n",
      "   ...\n",
      "   [0.00150527]\n",
      "   [0.00050176]\n",
      "   [0.00050176]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.00602107]\n",
      "   [0.00752634]\n",
      "   [0.00050176]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00050176]]\n",
      "\n",
      "  [[0.00903161]\n",
      "   [0.00501756]\n",
      "   [0.00250878]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.        ]]\n",
      "\n",
      "  [[0.00301054]\n",
      "   [0.00501756]\n",
      "   [0.00100351]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00050176]]]\n",
      "\n",
      "\n",
      " [[[0.01856498]\n",
      "   [0.02107376]\n",
      "   [0.00401405]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00150527]]\n",
      "\n",
      "  [[0.01756147]\n",
      "   [0.00953337]\n",
      "   [0.00100351]\n",
      "   ...\n",
      "   [0.00150527]\n",
      "   [0.00050176]\n",
      "   [0.00050176]]\n",
      "\n",
      "  [[0.00953337]\n",
      "   [0.01154039]\n",
      "   [0.00200702]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00150527]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.00903161]\n",
      "   [0.00501756]\n",
      "   [0.00250878]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.        ]]\n",
      "\n",
      "  [[0.00301054]\n",
      "   [0.00501756]\n",
      "   [0.00100351]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00050176]]\n",
      "\n",
      "  [[0.00551932]\n",
      "   [0.00652283]\n",
      "   [0.00050176]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.        ]\n",
      "   [0.        ]]]\n",
      "\n",
      "\n",
      " ...\n",
      "\n",
      "\n",
      " [[[0.04014049]\n",
      "   [0.06271952]\n",
      "   [0.01103864]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00100351]]\n",
      "\n",
      "  [[0.03110888]\n",
      "   [0.05368791]\n",
      "   [0.0080281 ]\n",
      "   ...\n",
      "   [0.00150527]\n",
      "   [0.        ]\n",
      "   [0.00451581]]\n",
      "\n",
      "  [[0.02257903]\n",
      "   [0.05218264]\n",
      "   [0.00602107]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00301054]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.04014049]\n",
      "   [0.04816859]\n",
      "   [0.01103864]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00250878]]\n",
      "\n",
      "  [[0.0286001 ]\n",
      "   [0.04064225]\n",
      "   [0.00551932]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00100351]]\n",
      "\n",
      "  [[0.03411942]\n",
      "   [0.03763171]\n",
      "   [0.00953337]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00200702]]]\n",
      "\n",
      "\n",
      " [[[0.03110888]\n",
      "   [0.05368791]\n",
      "   [0.0080281 ]\n",
      "   ...\n",
      "   [0.00150527]\n",
      "   [0.        ]\n",
      "   [0.00451581]]\n",
      "\n",
      "  [[0.02257903]\n",
      "   [0.05218264]\n",
      "   [0.00602107]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00301054]]\n",
      "\n",
      "  [[0.03562469]\n",
      "   [0.04967386]\n",
      "   [0.00551932]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00100351]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.0286001 ]\n",
      "   [0.04064225]\n",
      "   [0.00551932]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00100351]]\n",
      "\n",
      "  [[0.03411942]\n",
      "   [0.03763171]\n",
      "   [0.00953337]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00200702]]\n",
      "\n",
      "  [[0.02709483]\n",
      "   [0.03361766]\n",
      "   [0.00551932]\n",
      "   ...\n",
      "   [0.00150527]\n",
      "   [0.00050176]\n",
      "   [0.00100351]]]\n",
      "\n",
      "\n",
      " [[[0.02257903]\n",
      "   [0.05218264]\n",
      "   [0.00602107]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00301054]]\n",
      "\n",
      "  [[0.03562469]\n",
      "   [0.04967386]\n",
      "   [0.00551932]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00100351]]\n",
      "\n",
      "  [[0.04014049]\n",
      "   [0.04816859]\n",
      "   [0.01103864]\n",
      "   ...\n",
      "   [0.        ]\n",
      "   [0.        ]\n",
      "   [0.00250878]]\n",
      "\n",
      "  ...\n",
      "\n",
      "  [[0.03411942]\n",
      "   [0.03763171]\n",
      "   [0.00953337]\n",
      "   ...\n",
      "   [0.00050176]\n",
      "   [0.00050176]\n",
      "   [0.00200702]]\n",
      "\n",
      "  [[0.02709483]\n",
      "   [0.03361766]\n",
      "   [0.00551932]\n",
      "   ...\n",
      "   [0.00150527]\n",
      "   [0.00050176]\n",
      "   [0.00100351]]\n",
      "\n",
      "  [[0.02107376]\n",
      "   [0.02508781]\n",
      "   [0.00351229]\n",
      "   ...\n",
      "   [0.00250878]\n",
      "   [0.00050176]\n",
      "   [0.00150527]]]]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "train_set, test_set = [], []\n",
    "# for i in range(sensor_num):\n",
    "train_set += sliding_window(volume_train, window_size=7)\n",
    "test_set += sliding_window(volume_test, window_size=7)\n",
    "\n",
    "train_set, test_set = np.array(train_set), np.array(test_set)\n",
    "# train_set = np.swapaxes(train_set, 1, 2)\n",
    "# test_set = np.swapaxes(test_set, 1, 2)\n",
    "print(train_set.shape,test_set.shape)\n",
    "print(train_set,test_set)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义CNN + GRU模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "device = 'cpu'\n",
    "class MyCNN(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(MyCNN, self).__init__()\n",
    "        self.conv1 = nn.Sequential(\n",
    "            nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, padding=0),\n",
    "            nn.AvgPool2d((200, 1)),\n",
    "            nn.ReLU(inplace=True)\n",
    "        )\n",
    "    \n",
    "    def forward(self, x):\n",
    "        out = self.conv1(x)\n",
    "        return out.squeeze()\n",
    "\n",
    "Feature_extract = MyCNN()        \n",
    "torch_gru = nn.GRU(input_size=1, hidden_size=32, num_layers=1, batch_first=True).to(device)\n",
    "output_model = nn.Linear(32, 200).to(device)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "初始化模型参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "loss_func = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(list(torch_gru.parameters()) + list(output_model.parameters()), lr=0.0001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义评估函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def mape(y_true, y_pred):\n",
    "    y_true, y_pred = np.array(y_true), np.array(y_pred)\n",
    "    non_zero_index = (y_true > 0)\n",
    "    y_true = y_true[non_zero_index]\n",
    "    y_pred = y_pred[non_zero_index]\n",
    "\n",
    "    mape = np.abs((y_true - y_pred) / y_true)\n",
    "    mape[np.isinf(mape)] = 0\n",
    "    return np.mean(mape) * 100"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "读取batch函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def next_batch(data, batch_size):\n",
    "    data_length = len(data)\n",
    "    num_batches = math.ceil(data_length / batch_size)\n",
    "    for batch_index in range(num_batches):\n",
    "        start_index = batch_index * batch_size\n",
    "        end_index = min((batch_index + 1) * batch_size, data_length)\n",
    "        yield data[start_index:end_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#反归一化\n",
    "def denormalize(x):\n",
    "    return x * (dmax - dmin) + dmin"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "训练函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "batch 1, train_loss 0.025061,Time used 0.032363s\n",
      "batch 2, train_loss 0.024446,Time used 0.018950s\n",
      "batch 3, train_loss 0.024054,Time used 0.015956s\n",
      "batch 4, train_loss 0.024234,Time used 0.017952s\n",
      "batch 5, train_loss 0.026131,Time used 0.016955s\n",
      "batch 6, train_loss 0.025211,Time used 0.015957s\n",
      "batch 7, train_loss 0.023490,Time used 0.014961s\n",
      "batch 8, train_loss 0.023400,Time used 0.013965s\n",
      "batch 9, train_loss 0.023703,Time used 0.015957s\n",
      "batch 10, train_loss 0.024515,Time used 0.016956s\n",
      "batch 11, train_loss 0.025577,Time used 0.015957s\n",
      "batch 12, train_loss 0.024274,Time used 0.011967s\n",
      "batch 13, train_loss 0.024308,Time used 0.017959s\n",
      "batch 14, train_loss 0.023470,Time used 0.015956s\n",
      "batch 15, train_loss 0.023530,Time used 0.016957s\n",
      "batch 16, train_loss 0.023877,Time used 0.014960s\n",
      "batch 17, train_loss 0.023915,Time used 0.016955s\n",
      "batch 18, train_loss 0.022737,Time used 0.016954s\n",
      "batch 19, train_loss 0.022692,Time used 0.015958s\n",
      "batch 20, train_loss 0.023776,Time used 0.015958s\n",
      "batch 21, train_loss 0.023336,Time used 0.016954s\n",
      "batch 22, train_loss 0.022843,Time used 0.013963s\n",
      "batch 23, train_loss 0.021378,Time used 0.016954s\n",
      "batch 24, train_loss 0.022515,Time used 0.016956s\n",
      "batch 25, train_loss 0.022552,Time used 0.012966s\n",
      "batch 26, train_loss 0.021867,Time used 0.014959s\n",
      "batch 27, train_loss 0.023520,Time used 0.016953s\n",
      "batch 28, train_loss 0.022305,Time used 0.013963s\n",
      "batch 29, train_loss 0.023329,Time used 0.010970s\n",
      "batch 30, train_loss 0.022892,Time used 0.014961s\n",
      "batch 31, train_loss 0.021452,Time used 0.014961s\n",
      "batch 32, train_loss 0.021989,Time used 0.016954s\n",
      "batch 33, train_loss 0.021881,Time used 0.016956s\n",
      "batch 34, train_loss 0.022651,Time used 0.018951s\n",
      "batch 35, train_loss 0.022713,Time used 0.017951s\n",
      "batch 36, train_loss 0.020764,Time used 0.017951s\n",
      "batch 37, train_loss 0.022305,Time used 0.015957s\n",
      "batch 38, train_loss 0.022442,Time used 0.018952s\n",
      "batch 39, train_loss 0.020526,Time used 0.016954s\n",
      "batch 40, train_loss 0.021559,Time used 0.014960s\n",
      "batch 41, train_loss 0.022228,Time used 0.015960s\n",
      "batch 42, train_loss 0.020881,Time used 0.012964s\n",
      "batch 43, train_loss 0.020812,Time used 0.017953s\n",
      "batch 44, train_loss 0.021358,Time used 0.016956s\n",
      "batch 45, train_loss 0.020143,Time used 0.012965s\n",
      "batch 46, train_loss 0.020356,Time used 0.016955s\n",
      "batch 47, train_loss 0.020622,Time used 0.015958s\n",
      "batch 48, train_loss 0.021262,Time used 0.016955s\n",
      "batch 49, train_loss 0.020252,Time used 0.016953s\n",
      "batch 50, train_loss 0.020132,Time used 0.016955s\n",
      "batch 51, train_loss 0.020893,Time used 0.017952s\n",
      "batch 52, train_loss 0.019793,Time used 0.016955s\n",
      "batch 53, train_loss 0.019906,Time used 0.015963s\n",
      "batch 54, train_loss 0.021008,Time used 0.017947s\n",
      "batch 55, train_loss 0.019327,Time used 0.016954s\n",
      "batch 56, train_loss 0.021031,Time used 0.017952s\n",
      "batch 57, train_loss 0.020800,Time used 0.016957s\n",
      "batch 58, train_loss 0.020216,Time used 0.016954s\n",
      "batch 59, train_loss 0.020919,Time used 0.016954s\n",
      "batch 60, train_loss 0.019033,Time used 0.014962s\n",
      "batch 61, train_loss 0.019020,Time used 0.015959s\n",
      "batch 62, train_loss 0.018867,Time used 0.013961s\n",
      "batch 63, train_loss 0.019229,Time used 0.016955s\n",
      "batch 64, train_loss 0.019489,Time used 0.016954s\n",
      "batch 65, train_loss 0.020213,Time used 0.012966s\n",
      "batch 66, train_loss 0.019636,Time used 0.018949s\n",
      "batch 67, train_loss 0.019032,Time used 0.016955s\n",
      "batch 68, train_loss 0.018443,Time used 0.018949s\n",
      "batch 69, train_loss 0.019922,Time used 0.016955s\n",
      "batch 70, train_loss 0.019837,Time used 0.017951s\n",
      "batch 71, train_loss 0.020520,Time used 0.017952s\n",
      "batch 72, train_loss 0.019181,Time used 0.017952s\n",
      "batch 73, train_loss 0.018716,Time used 0.012966s\n",
      "batch 74, train_loss 0.018454,Time used 0.010971s\n",
      "batch 75, train_loss 0.018002,Time used 0.010971s\n",
      "batch 76, train_loss 0.017277,Time used 0.017951s\n",
      "batch 77, train_loss 0.018128,Time used 0.014955s\n",
      "batch 78, train_loss 0.018250,Time used 0.015958s\n",
      "batch 79, train_loss 0.018800,Time used 0.017952s\n",
      "batch 80, train_loss 0.018977,Time used 0.015957s\n",
      "batch 81, train_loss 0.019020,Time used 0.015959s\n",
      "batch 82, train_loss 0.018513,Time used 0.016954s\n",
      "batch 83, train_loss 0.019091,Time used 0.016955s\n",
      "batch 84, train_loss 0.018553,Time used 0.016955s\n",
      "batch 85, train_loss 0.018428,Time used 0.020946s\n",
      "batch 86, train_loss 0.018015,Time used 0.018951s\n",
      "batch 87, train_loss 0.017602,Time used 0.020950s\n",
      "batch 88, train_loss 0.017011,Time used 0.018945s\n",
      "batch 89, train_loss 0.017753,Time used 0.019947s\n",
      "batch 90, train_loss 0.016892,Time used 0.017952s\n",
      "batch 91, train_loss 0.018329,Time used 0.017953s\n",
      "batch 92, train_loss 0.017670,Time used 0.015957s\n",
      "batch 93, train_loss 0.017321,Time used 0.017953s\n",
      "batch 94, train_loss 0.017565,Time used 0.017951s\n",
      "batch 95, train_loss 0.018421,Time used 0.020952s\n",
      "batch 96, train_loss 0.017127,Time used 0.020946s\n",
      "batch 97, train_loss 0.016510,Time used 0.013965s\n",
      "batch 98, train_loss 0.017131,Time used 0.012969s\n",
      "batch 99, train_loss 0.016736,Time used 0.011962s\n",
      "batch 100, train_loss 0.016825,Time used 0.019947s\n",
      "——test_batch 100, test_rmse_loss 0.139008,test_mae_loss 0.089375,test_mape_loss 2539.340566,Time used 0.083766s\n",
      "batch 101, train_loss 0.016998,Time used 0.017950s\n",
      "batch 102, train_loss 0.016062,Time used 0.019966s\n",
      "batch 103, train_loss 0.016180,Time used 0.014014s\n",
      "batch 104, train_loss 0.017260,Time used 0.018949s\n",
      "batch 105, train_loss 0.016457,Time used 0.017952s\n",
      "batch 106, train_loss 0.015955,Time used 0.018951s\n",
      "batch 107, train_loss 0.016388,Time used 0.018949s\n",
      "batch 108, train_loss 0.016249,Time used 0.014959s\n",
      "batch 109, train_loss 0.017038,Time used 0.016949s\n",
      "batch 110, train_loss 0.016508,Time used 0.015958s\n",
      "batch 111, train_loss 0.016270,Time used 0.019947s\n",
      "batch 112, train_loss 0.015804,Time used 0.019948s\n",
      "batch 113, train_loss 0.016579,Time used 0.018949s\n",
      "batch 114, train_loss 0.015166,Time used 0.015957s\n",
      "batch 115, train_loss 0.015915,Time used 0.014958s\n",
      "batch 116, train_loss 0.015959,Time used 0.015958s\n",
      "batch 117, train_loss 0.017006,Time used 0.017950s\n",
      "batch 118, train_loss 0.015768,Time used 0.017952s\n",
      "batch 119, train_loss 0.015435,Time used 0.019956s\n",
      "batch 120, train_loss 0.015111,Time used 0.017951s\n",
      "batch 121, train_loss 0.014911,Time used 0.020946s\n",
      "batch 122, train_loss 0.016407,Time used 0.018950s\n",
      "batch 123, train_loss 0.015209,Time used 0.017955s\n",
      "batch 124, train_loss 0.016242,Time used 0.017952s\n",
      "batch 125, train_loss 0.014268,Time used 0.018941s\n",
      "batch 126, train_loss 0.015474,Time used 0.011968s\n",
      "batch 127, train_loss 0.014926,Time used 0.018946s\n",
      "batch 128, train_loss 0.015024,Time used 0.011966s\n",
      "batch 129, train_loss 0.015111,Time used 0.017959s\n",
      "batch 130, train_loss 0.014618,Time used 0.011967s\n",
      "batch 131, train_loss 0.015311,Time used 0.019946s\n",
      "batch 132, train_loss 0.015521,Time used 0.017951s\n",
      "batch 133, train_loss 0.015036,Time used 0.013964s\n",
      "batch 134, train_loss 0.013304,Time used 0.019948s\n",
      "batch 135, train_loss 0.014688,Time used 0.016954s\n",
      "batch 136, train_loss 0.015108,Time used 0.016955s\n",
      "batch 137, train_loss 0.014790,Time used 0.016955s\n",
      "batch 138, train_loss 0.013965,Time used 0.015957s\n",
      "batch 139, train_loss 0.013576,Time used 0.016954s\n",
      "batch 140, train_loss 0.014804,Time used 0.015957s\n",
      "batch 141, train_loss 0.013992,Time used 0.018952s\n",
      "batch 142, train_loss 0.014443,Time used 0.017951s\n",
      "batch 143, train_loss 0.013707,Time used 0.018945s\n",
      "batch 144, train_loss 0.013759,Time used 0.016955s\n",
      "batch 145, train_loss 0.014681,Time used 0.013963s\n",
      "batch 146, train_loss 0.014500,Time used 0.016955s\n",
      "batch 147, train_loss 0.013078,Time used 0.015958s\n",
      "batch 148, train_loss 0.013763,Time used 0.013961s\n",
      "batch 149, train_loss 0.013654,Time used 0.012966s\n",
      "batch 150, train_loss 0.013277,Time used 0.016957s\n",
      "batch 151, train_loss 0.013751,Time used 0.019946s\n",
      "batch 152, train_loss 0.013289,Time used 0.011966s\n",
      "batch 153, train_loss 0.012136,Time used 0.018951s\n",
      "batch 154, train_loss 0.014180,Time used 0.017950s\n",
      "batch 155, train_loss 0.011915,Time used 0.017951s\n",
      "batch 156, train_loss 0.012318,Time used 0.018982s\n",
      "batch 157, train_loss 0.013694,Time used 0.017919s\n",
      "batch 158, train_loss 0.013369,Time used 0.016954s\n",
      "batch 159, train_loss 0.013679,Time used 0.017951s\n",
      "batch 160, train_loss 0.013545,Time used 0.016955s\n",
      "batch 161, train_loss 0.012207,Time used 0.018950s\n",
      "batch 162, train_loss 0.013796,Time used 0.021942s\n",
      "batch 163, train_loss 0.013426,Time used 0.015957s\n",
      "batch 164, train_loss 0.012259,Time used 0.016957s\n",
      "batch 165, train_loss 0.012812,Time used 0.017951s\n",
      "batch 166, train_loss 0.012315,Time used 0.016954s\n",
      "batch 167, train_loss 0.011332,Time used 0.015958s\n",
      "batch 168, train_loss 0.013067,Time used 0.016955s\n",
      "batch 169, train_loss 0.011867,Time used 0.016953s\n",
      "batch 170, train_loss 0.012863,Time used 0.016962s\n",
      "batch 171, train_loss 0.011801,Time used 0.017953s\n",
      "batch 172, train_loss 0.011925,Time used 0.016954s\n",
      "batch 173, train_loss 0.012071,Time used 0.016954s\n",
      "batch 174, train_loss 0.012274,Time used 0.013963s\n",
      "batch 175, train_loss 0.012360,Time used 0.015956s\n",
      "batch 176, train_loss 0.011871,Time used 0.009974s\n",
      "batch 177, train_loss 0.012110,Time used 0.015957s\n",
      "batch 178, train_loss 0.011936,Time used 0.013963s\n",
      "batch 179, train_loss 0.012186,Time used 0.013964s\n",
      "batch 180, train_loss 0.011912,Time used 0.014960s\n",
      "batch 181, train_loss 0.012264,Time used 0.017952s\n",
      "batch 182, train_loss 0.011565,Time used 0.016954s\n",
      "batch 183, train_loss 0.010875,Time used 0.021940s\n",
      "batch 184, train_loss 0.011265,Time used 0.017953s\n",
      "batch 185, train_loss 0.011687,Time used 0.015956s\n",
      "batch 186, train_loss 0.011078,Time used 0.015959s\n",
      "batch 187, train_loss 0.011056,Time used 0.016956s\n",
      "batch 188, train_loss 0.011359,Time used 0.017952s\n",
      "batch 189, train_loss 0.010837,Time used 0.019948s\n",
      "batch 190, train_loss 0.011121,Time used 0.018950s\n",
      "batch 191, train_loss 0.010815,Time used 0.018949s\n",
      "batch 192, train_loss 0.010955,Time used 0.017952s\n",
      "batch 193, train_loss 0.011034,Time used 0.017956s\n",
      "batch 194, train_loss 0.010964,Time used 0.017950s\n",
      "batch 195, train_loss 0.010847,Time used 0.019941s\n",
      "batch 196, train_loss 0.010124,Time used 0.019948s\n",
      "batch 197, train_loss 0.011320,Time used 0.018906s\n",
      "batch 198, train_loss 0.010680,Time used 0.017951s\n",
      "batch 199, train_loss 0.011248,Time used 0.019947s\n",
      "batch 200, train_loss 0.010038,Time used 0.018951s\n",
      "——test_batch 200, test_rmse_loss 0.110695,test_mae_loss 0.061228,test_mape_loss 1508.686452,Time used 0.092755s\n",
      "batch 201, train_loss 0.010623,Time used 0.020943s\n",
      "batch 202, train_loss 0.009593,Time used 0.021941s\n",
      "batch 203, train_loss 0.009935,Time used 0.018951s\n",
      "batch 204, train_loss 0.010419,Time used 0.018949s\n",
      "batch 205, train_loss 0.009791,Time used 0.019946s\n",
      "batch 206, train_loss 0.010378,Time used 0.016956s\n",
      "batch 207, train_loss 0.009852,Time used 0.016948s\n",
      "batch 208, train_loss 0.009720,Time used 0.010971s\n",
      "batch 209, train_loss 0.009746,Time used 0.009974s\n",
      "batch 210, train_loss 0.010423,Time used 0.013963s\n",
      "batch 211, train_loss 0.010067,Time used 0.019950s\n",
      "batch 212, train_loss 0.009669,Time used 0.017952s\n",
      "batch 213, train_loss 0.009665,Time used 0.017954s\n",
      "batch 214, train_loss 0.009731,Time used 0.018949s\n",
      "batch 215, train_loss 0.009787,Time used 0.019947s\n",
      "batch 216, train_loss 0.009990,Time used 0.019946s\n",
      "batch 217, train_loss 0.009141,Time used 0.018948s\n",
      "batch 218, train_loss 0.009618,Time used 0.016959s\n",
      "batch 219, train_loss 0.010001,Time used 0.017956s\n",
      "batch 220, train_loss 0.009149,Time used 0.019943s\n",
      "batch 221, train_loss 0.009065,Time used 0.019947s\n",
      "batch 222, train_loss 0.008921,Time used 0.012965s\n",
      "batch 223, train_loss 0.008212,Time used 0.018949s\n",
      "batch 224, train_loss 0.008616,Time used 0.015958s\n",
      "batch 225, train_loss 0.008822,Time used 0.017952s\n",
      "batch 226, train_loss 0.009415,Time used 0.017951s\n",
      "batch 227, train_loss 0.009018,Time used 0.016956s\n",
      "batch 228, train_loss 0.008933,Time used 0.017951s\n",
      "batch 229, train_loss 0.009169,Time used 0.014958s\n",
      "batch 230, train_loss 0.008862,Time used 0.014961s\n",
      "batch 231, train_loss 0.008353,Time used 0.014960s\n",
      "batch 232, train_loss 0.008106,Time used 0.009975s\n",
      "batch 233, train_loss 0.008891,Time used 0.014960s\n",
      "batch 234, train_loss 0.007924,Time used 0.015958s\n",
      "batch 235, train_loss 0.008327,Time used 0.015956s\n",
      "batch 236, train_loss 0.008129,Time used 0.014961s\n",
      "batch 237, train_loss 0.007999,Time used 0.017954s\n",
      "batch 238, train_loss 0.008013,Time used 0.016954s\n",
      "batch 239, train_loss 0.008106,Time used 0.009973s\n",
      "batch 240, train_loss 0.008368,Time used 0.015958s\n",
      "batch 241, train_loss 0.008461,Time used 0.011966s\n",
      "batch 242, train_loss 0.008239,Time used 0.010971s\n",
      "batch 243, train_loss 0.007409,Time used 0.015957s\n",
      "batch 244, train_loss 0.008231,Time used 0.013963s\n",
      "batch 245, train_loss 0.007972,Time used 0.017954s\n",
      "batch 246, train_loss 0.008328,Time used 0.018947s\n",
      "batch 247, train_loss 0.007618,Time used 0.015955s\n",
      "batch 248, train_loss 0.007556,Time used 0.018945s\n",
      "batch 249, train_loss 0.007599,Time used 0.014958s\n",
      "batch 250, train_loss 0.007132,Time used 0.017951s\n",
      "batch 251, train_loss 0.007380,Time used 0.015963s\n",
      "batch 252, train_loss 0.007989,Time used 0.013964s\n",
      "batch 253, train_loss 0.007004,Time used 0.011969s\n",
      "batch 254, train_loss 0.007202,Time used 0.018942s\n",
      "batch 255, train_loss 0.007323,Time used 0.011973s\n",
      "batch 256, train_loss 0.006808,Time used 0.017952s\n",
      "batch 257, train_loss 0.007463,Time used 0.017955s\n",
      "batch 258, train_loss 0.007199,Time used 0.017953s\n",
      "batch 259, train_loss 0.006543,Time used 0.017952s\n",
      "batch 260, train_loss 0.007169,Time used 0.018950s\n",
      "batch 261, train_loss 0.007385,Time used 0.018948s\n",
      "batch 262, train_loss 0.006570,Time used 0.016954s\n",
      "batch 263, train_loss 0.007111,Time used 0.017954s\n",
      "batch 264, train_loss 0.006910,Time used 0.017951s\n",
      "batch 265, train_loss 0.006830,Time used 0.011976s\n",
      "batch 266, train_loss 0.006838,Time used 0.017936s\n",
      "batch 267, train_loss 0.007229,Time used 0.011969s\n",
      "batch 268, train_loss 0.007074,Time used 0.019946s\n",
      "batch 269, train_loss 0.006535,Time used 0.017952s\n",
      "batch 270, train_loss 0.006429,Time used 0.018948s\n",
      "batch 271, train_loss 0.006737,Time used 0.018949s\n",
      "batch 272, train_loss 0.006647,Time used 0.017951s\n",
      "batch 273, train_loss 0.006005,Time used 0.015959s\n",
      "batch 274, train_loss 0.007571,Time used 0.015957s\n",
      "batch 275, train_loss 0.006078,Time used 0.016955s\n",
      "batch 276, train_loss 0.006236,Time used 0.017953s\n",
      "batch 277, train_loss 0.006634,Time used 0.016956s\n",
      "batch 278, train_loss 0.006258,Time used 0.015956s\n",
      "batch 279, train_loss 0.006196,Time used 0.018950s\n",
      "batch 280, train_loss 0.006168,Time used 0.016956s\n",
      "batch 281, train_loss 0.005846,Time used 0.018950s\n",
      "batch 282, train_loss 0.006086,Time used 0.016973s\n",
      "batch 283, train_loss 0.005978,Time used 0.016952s\n",
      "batch 284, train_loss 0.005746,Time used 0.016954s\n",
      "batch 285, train_loss 0.005614,Time used 0.016954s\n",
      "batch 286, train_loss 0.005511,Time used 0.016953s\n",
      "batch 287, train_loss 0.006153,Time used 0.017952s\n",
      "batch 288, train_loss 0.005597,Time used 0.019947s\n",
      "batch 289, train_loss 0.005774,Time used 0.019947s\n",
      "batch 290, train_loss 0.005670,Time used 0.018949s\n",
      "batch 291, train_loss 0.006148,Time used 0.015962s\n",
      "batch 292, train_loss 0.005486,Time used 0.017957s\n",
      "batch 293, train_loss 0.005596,Time used 0.016955s\n",
      "batch 294, train_loss 0.005164,Time used 0.014961s\n",
      "batch 295, train_loss 0.005555,Time used 0.016954s\n",
      "batch 296, train_loss 0.005779,Time used 0.017952s\n",
      "batch 297, train_loss 0.005612,Time used 0.017953s\n",
      "batch 298, train_loss 0.005594,Time used 0.018950s\n",
      "batch 299, train_loss 0.005352,Time used 0.017965s\n",
      "batch 300, train_loss 0.005486,Time used 0.017953s\n",
      "——test_batch 300, test_rmse_loss 0.080648,test_mae_loss 0.038214,test_mape_loss 756.408351,Time used 0.087766s\n",
      "batch 301, train_loss 0.005723,Time used 0.017951s\n",
      "batch 302, train_loss 0.005686,Time used 0.020945s\n",
      "batch 303, train_loss 0.004668,Time used 0.018948s\n",
      "batch 304, train_loss 0.005135,Time used 0.017953s\n",
      "batch 305, train_loss 0.005244,Time used 0.018947s\n",
      "batch 306, train_loss 0.005166,Time used 0.015959s\n",
      "batch 307, train_loss 0.005039,Time used 0.017952s\n",
      "batch 308, train_loss 0.005278,Time used 0.016954s\n",
      "batch 309, train_loss 0.005111,Time used 0.017956s\n",
      "batch 310, train_loss 0.004816,Time used 0.017951s\n",
      "batch 311, train_loss 0.005283,Time used 0.017953s\n",
      "batch 312, train_loss 0.004786,Time used 0.018950s\n",
      "batch 313, train_loss 0.004987,Time used 0.017953s\n",
      "batch 314, train_loss 0.004943,Time used 0.017953s\n",
      "batch 315, train_loss 0.004482,Time used 0.017951s\n",
      "batch 316, train_loss 0.004940,Time used 0.017951s\n",
      "batch 317, train_loss 0.004507,Time used 0.018949s\n",
      "batch 318, train_loss 0.004823,Time used 0.015959s\n",
      "batch 319, train_loss 0.004979,Time used 0.011970s\n",
      "batch 320, train_loss 0.004751,Time used 0.016954s\n",
      "batch 321, train_loss 0.004429,Time used 0.015957s\n",
      "batch 322, train_loss 0.004662,Time used 0.015957s\n",
      "batch 323, train_loss 0.004670,Time used 0.015957s\n",
      "batch 324, train_loss 0.004416,Time used 0.016960s\n",
      "batch 325, train_loss 0.004578,Time used 0.016956s\n",
      "batch 326, train_loss 0.004842,Time used 0.018975s\n",
      "batch 327, train_loss 0.004698,Time used 0.017951s\n",
      "batch 328, train_loss 0.004072,Time used 0.016955s\n",
      "batch 329, train_loss 0.004489,Time used 0.016955s\n",
      "batch 330, train_loss 0.004527,Time used 0.011966s\n",
      "batch 331, train_loss 0.004549,Time used 0.016953s\n",
      "batch 332, train_loss 0.004200,Time used 0.016956s\n",
      "batch 333, train_loss 0.004314,Time used 0.017951s\n",
      "batch 334, train_loss 0.004240,Time used 0.018950s\n",
      "batch 335, train_loss 0.004364,Time used 0.015964s\n",
      "batch 336, train_loss 0.004217,Time used 0.014961s\n",
      "batch 337, train_loss 0.004319,Time used 0.017952s\n",
      "batch 338, train_loss 0.004244,Time used 0.017951s\n",
      "batch 339, train_loss 0.004491,Time used 0.018952s\n",
      "batch 340, train_loss 0.004134,Time used 0.016954s\n",
      "batch 341, train_loss 0.004657,Time used 0.016955s\n",
      "batch 342, train_loss 0.003827,Time used 0.016955s\n",
      "batch 343, train_loss 0.004133,Time used 0.016955s\n",
      "batch 344, train_loss 0.003959,Time used 0.015953s\n",
      "batch 345, train_loss 0.003842,Time used 0.018951s\n",
      "batch 346, train_loss 0.004186,Time used 0.016955s\n",
      "batch 347, train_loss 0.003981,Time used 0.017953s\n",
      "batch 348, train_loss 0.003787,Time used 0.020942s\n",
      "batch 349, train_loss 0.003834,Time used 0.011970s\n",
      "batch 350, train_loss 0.003877,Time used 0.015955s\n",
      "batch 351, train_loss 0.003871,Time used 0.017950s\n",
      "batch 352, train_loss 0.004020,Time used 0.013964s\n",
      "batch 353, train_loss 0.004255,Time used 0.010970s\n",
      "batch 354, train_loss 0.003904,Time used 0.015957s\n",
      "batch 355, train_loss 0.004029,Time used 0.018949s\n",
      "batch 356, train_loss 0.003818,Time used 0.014961s\n",
      "batch 357, train_loss 0.003892,Time used 0.016954s\n",
      "batch 358, train_loss 0.003743,Time used 0.018950s\n",
      "batch 359, train_loss 0.003647,Time used 0.017953s\n",
      "batch 360, train_loss 0.003789,Time used 0.018950s\n",
      "batch 361, train_loss 0.003665,Time used 0.017952s\n",
      "batch 362, train_loss 0.003682,Time used 0.018942s\n",
      "batch 363, train_loss 0.003853,Time used 0.017951s\n",
      "batch 364, train_loss 0.003945,Time used 0.016956s\n",
      "batch 365, train_loss 0.003911,Time used 0.019944s\n",
      "batch 366, train_loss 0.003538,Time used 0.009972s\n",
      "batch 367, train_loss 0.003538,Time used 0.014959s\n",
      "batch 368, train_loss 0.003566,Time used 0.015958s\n",
      "batch 369, train_loss 0.003701,Time used 0.014961s\n",
      "batch 370, train_loss 0.003876,Time used 0.016964s\n",
      "batch 371, train_loss 0.003458,Time used 0.018954s\n",
      "batch 372, train_loss 0.003819,Time used 0.018950s\n",
      "batch 373, train_loss 0.003471,Time used 0.018949s\n",
      "batch 374, train_loss 0.003172,Time used 0.017951s\n",
      "batch 375, train_loss 0.003555,Time used 0.017962s\n",
      "batch 376, train_loss 0.003287,Time used 0.015958s\n",
      "batch 377, train_loss 0.003410,Time used 0.014960s\n",
      "batch 378, train_loss 0.003341,Time used 0.014958s\n",
      "batch 379, train_loss 0.003312,Time used 0.011968s\n",
      "batch 380, train_loss 0.003401,Time used 0.011968s\n",
      "batch 381, train_loss 0.003906,Time used 0.016957s\n",
      "batch 382, train_loss 0.003536,Time used 0.013966s\n",
      "batch 383, train_loss 0.003462,Time used 0.014956s\n",
      "batch 384, train_loss 0.003463,Time used 0.015956s\n",
      "batch 385, train_loss 0.003424,Time used 0.016955s\n",
      "batch 386, train_loss 0.003306,Time used 0.018943s\n",
      "batch 387, train_loss 0.003485,Time used 0.018952s\n",
      "batch 388, train_loss 0.003286,Time used 0.018946s\n",
      "batch 389, train_loss 0.003591,Time used 0.015965s\n",
      "batch 390, train_loss 0.003435,Time used 0.017949s\n",
      "batch 391, train_loss 0.003396,Time used 0.016954s\n",
      "batch 392, train_loss 0.003331,Time used 0.017952s\n",
      "batch 393, train_loss 0.002773,Time used 0.017952s\n",
      "batch 394, train_loss 0.003507,Time used 0.016949s\n",
      "batch 395, train_loss 0.002938,Time used 0.015960s\n",
      "batch 396, train_loss 0.003474,Time used 0.016956s\n",
      "batch 397, train_loss 0.003327,Time used 0.015958s\n",
      "batch 398, train_loss 0.003406,Time used 0.017954s\n",
      "batch 399, train_loss 0.003251,Time used 0.017948s\n",
      "batch 400, train_loss 0.002999,Time used 0.015957s\n",
      "——test_batch 400, test_rmse_loss 0.062450,test_mae_loss 0.025646,test_mape_loss 323.432211,Time used 0.087766s\n",
      "batch 401, train_loss 0.003385,Time used 0.017951s\n",
      "batch 402, train_loss 0.003228,Time used 0.019948s\n",
      "batch 403, train_loss 0.003353,Time used 0.017952s\n",
      "batch 404, train_loss 0.003504,Time used 0.017952s\n",
      "batch 405, train_loss 0.003326,Time used 0.017951s\n",
      "batch 406, train_loss 0.003327,Time used 0.016955s\n",
      "batch 407, train_loss 0.003280,Time used 0.017931s\n",
      "batch 408, train_loss 0.003105,Time used 0.013964s\n",
      "batch 409, train_loss 0.003260,Time used 0.014960s\n",
      "batch 410, train_loss 0.003331,Time used 0.015958s\n",
      "batch 411, train_loss 0.002885,Time used 0.015958s\n",
      "batch 412, train_loss 0.003322,Time used 0.011967s\n",
      "batch 413, train_loss 0.002977,Time used 0.015961s\n",
      "batch 414, train_loss 0.003211,Time used 0.015955s\n",
      "batch 415, train_loss 0.003098,Time used 0.018950s\n",
      "batch 416, train_loss 0.002893,Time used 0.017952s\n",
      "batch 417, train_loss 0.003178,Time used 0.017962s\n",
      "batch 418, train_loss 0.002971,Time used 0.016955s\n",
      "batch 419, train_loss 0.003100,Time used 0.016954s\n",
      "batch 420, train_loss 0.003364,Time used 0.016957s\n",
      "batch 421, train_loss 0.003026,Time used 0.012962s\n",
      "batch 422, train_loss 0.003111,Time used 0.018952s\n",
      "batch 423, train_loss 0.003223,Time used 0.018950s\n",
      "batch 424, train_loss 0.002814,Time used 0.018950s\n",
      "batch 425, train_loss 0.002929,Time used 0.018950s\n",
      "batch 426, train_loss 0.003127,Time used 0.015957s\n",
      "batch 427, train_loss 0.003094,Time used 0.015955s\n",
      "batch 428, train_loss 0.003053,Time used 0.017953s\n",
      "batch 429, train_loss 0.003022,Time used 0.014959s\n",
      "batch 430, train_loss 0.003052,Time used 0.018950s\n",
      "batch 431, train_loss 0.003289,Time used 0.019946s\n",
      "batch 432, train_loss 0.003034,Time used 0.014967s\n",
      "batch 433, train_loss 0.003121,Time used 0.017953s\n",
      "batch 434, train_loss 0.002908,Time used 0.017954s\n",
      "batch 435, train_loss 0.003037,Time used 0.018950s\n",
      "batch 436, train_loss 0.002502,Time used 0.017951s\n",
      "batch 437, train_loss 0.003319,Time used 0.016954s\n",
      "batch 438, train_loss 0.002833,Time used 0.014961s\n",
      "batch 439, train_loss 0.003136,Time used 0.015957s\n",
      "batch 440, train_loss 0.002966,Time used 0.018950s\n",
      "batch 441, train_loss 0.003005,Time used 0.019948s\n",
      "batch 442, train_loss 0.002944,Time used 0.017952s\n",
      "batch 443, train_loss 0.003058,Time used 0.018950s\n",
      "batch 444, train_loss 0.002847,Time used 0.018951s\n",
      "batch 445, train_loss 0.003178,Time used 0.018949s\n",
      "batch 446, train_loss 0.002953,Time used 0.017952s\n",
      "batch 447, train_loss 0.003017,Time used 0.018950s\n",
      "batch 448, train_loss 0.003315,Time used 0.018949s\n",
      "batch 449, train_loss 0.002839,Time used 0.017954s\n",
      "batch 450, train_loss 0.002788,Time used 0.017951s\n",
      "batch 451, train_loss 0.002728,Time used 0.017953s\n",
      "batch 452, train_loss 0.003151,Time used 0.018949s\n",
      "batch 453, train_loss 0.002964,Time used 0.018950s\n",
      "batch 454, train_loss 0.002895,Time used 0.018949s\n",
      "batch 455, train_loss 0.003141,Time used 0.012962s\n",
      "batch 456, train_loss 0.002904,Time used 0.017953s\n",
      "batch 457, train_loss 0.003050,Time used 0.013963s\n",
      "batch 458, train_loss 0.002868,Time used 0.018944s\n",
      "batch 459, train_loss 0.002991,Time used 0.012965s\n",
      "batch 460, train_loss 0.002888,Time used 0.019946s\n",
      "batch 461, train_loss 0.002742,Time used 0.017953s\n",
      "batch 462, train_loss 0.002877,Time used 0.016954s\n",
      "batch 463, train_loss 0.002972,Time used 0.019948s\n",
      "batch 464, train_loss 0.003017,Time used 0.017944s\n",
      "batch 465, train_loss 0.002648,Time used 0.016955s\n",
      "batch 466, train_loss 0.002908,Time used 0.012965s\n",
      "batch 467, train_loss 0.002856,Time used 0.015956s\n",
      "batch 468, train_loss 0.002921,Time used 0.017952s\n",
      "batch 469, train_loss 0.002923,Time used 0.017956s\n",
      "batch 470, train_loss 0.002884,Time used 0.012967s\n",
      "batch 471, train_loss 0.002971,Time used 0.015957s\n",
      "batch 472, train_loss 0.003030,Time used 0.018951s\n",
      "batch 473, train_loss 0.002759,Time used 0.017952s\n",
      "batch 474, train_loss 0.002947,Time used 0.016955s\n",
      "batch 475, train_loss 0.002978,Time used 0.016955s\n",
      "batch 476, train_loss 0.002584,Time used 0.016954s\n",
      "batch 477, train_loss 0.002581,Time used 0.015958s\n",
      "batch 478, train_loss 0.002955,Time used 0.015956s\n",
      "batch 479, train_loss 0.002977,Time used 0.014962s\n",
      "batch 480, train_loss 0.002929,Time used 0.015959s\n",
      "batch 481, train_loss 0.002900,Time used 0.014960s\n",
      "batch 482, train_loss 0.002805,Time used 0.013963s\n",
      "batch 483, train_loss 0.002557,Time used 0.015958s\n",
      "batch 484, train_loss 0.002786,Time used 0.017951s\n",
      "batch 485, train_loss 0.003098,Time used 0.015957s\n",
      "batch 486, train_loss 0.002893,Time used 0.014961s\n",
      "batch 487, train_loss 0.002887,Time used 0.014961s\n",
      "batch 488, train_loss 0.002636,Time used 0.009974s\n",
      "batch 489, train_loss 0.003115,Time used 0.015956s\n",
      "batch 490, train_loss 0.002761,Time used 0.015959s\n",
      "batch 491, train_loss 0.002846,Time used 0.015955s\n",
      "batch 492, train_loss 0.002744,Time used 0.015957s\n",
      "batch 493, train_loss 0.002882,Time used 0.012966s\n",
      "batch 494, train_loss 0.003030,Time used 0.013963s\n",
      "batch 495, train_loss 0.002732,Time used 0.014960s\n",
      "batch 496, train_loss 0.002833,Time used 0.014961s\n",
      "batch 497, train_loss 0.003031,Time used 0.013963s\n",
      "batch 498, train_loss 0.002689,Time used 0.012965s\n",
      "batch 499, train_loss 0.002460,Time used 0.017953s\n",
      "batch 500, train_loss 0.002815,Time used 0.017953s\n",
      "——test_batch 500, test_rmse_loss 0.057594,test_mae_loss 0.021526,test_mape_loss 163.120446,Time used 0.081780s\n",
      "batch 501, train_loss 0.002675,Time used 0.017955s\n",
      "batch 502, train_loss 0.002961,Time used 0.019945s\n",
      "batch 503, train_loss 0.002991,Time used 0.018949s\n",
      "batch 504, train_loss 0.003210,Time used 0.016955s\n",
      "batch 505, train_loss 0.002510,Time used 0.015958s\n",
      "batch 506, train_loss 0.002634,Time used 0.019948s\n",
      "batch 507, train_loss 0.002848,Time used 0.017953s\n",
      "batch 508, train_loss 0.002907,Time used 0.016954s\n",
      "batch 509, train_loss 0.002521,Time used 0.016954s\n",
      "batch 510, train_loss 0.003224,Time used 0.015958s\n",
      "batch 511, train_loss 0.003075,Time used 0.017954s\n",
      "batch 512, train_loss 0.002830,Time used 0.017953s\n",
      "batch 513, train_loss 0.002787,Time used 0.018955s\n",
      "batch 514, train_loss 0.003172,Time used 0.016955s\n",
      "batch 515, train_loss 0.002721,Time used 0.017947s\n",
      "batch 516, train_loss 0.002929,Time used 0.016957s\n",
      "batch 517, train_loss 0.002707,Time used 0.016953s\n",
      "batch 518, train_loss 0.002733,Time used 0.016954s\n",
      "batch 519, train_loss 0.002647,Time used 0.014960s\n",
      "batch 520, train_loss 0.003010,Time used 0.015958s\n",
      "batch 521, train_loss 0.002497,Time used 0.016954s\n",
      "batch 522, train_loss 0.002777,Time used 0.018951s\n",
      "batch 523, train_loss 0.002914,Time used 0.016954s\n",
      "batch 524, train_loss 0.002639,Time used 0.016956s\n",
      "batch 525, train_loss 0.002531,Time used 0.016955s\n",
      "batch 526, train_loss 0.002974,Time used 0.017947s\n",
      "batch 527, train_loss 0.002795,Time used 0.016954s\n",
      "batch 528, train_loss 0.002434,Time used 0.014962s\n",
      "batch 529, train_loss 0.002977,Time used 0.013964s\n",
      "batch 530, train_loss 0.002693,Time used 0.015959s\n",
      "batch 531, train_loss 0.002938,Time used 0.016956s\n",
      "batch 532, train_loss 0.002667,Time used 0.015954s\n",
      "batch 533, train_loss 0.003062,Time used 0.015958s\n",
      "batch 534, train_loss 0.002612,Time used 0.016957s\n",
      "batch 535, train_loss 0.002947,Time used 0.015946s\n",
      "batch 536, train_loss 0.002943,Time used 0.016955s\n",
      "batch 537, train_loss 0.002676,Time used 0.016955s\n",
      "batch 538, train_loss 0.002722,Time used 0.016956s\n",
      "batch 539, train_loss 0.002615,Time used 0.015967s\n",
      "batch 540, train_loss 0.002689,Time used 0.012966s\n",
      "batch 541, train_loss 0.002626,Time used 0.016953s\n",
      "batch 542, train_loss 0.002727,Time used 0.017953s\n",
      "batch 543, train_loss 0.002746,Time used 0.016958s\n",
      "batch 544, train_loss 0.002854,Time used 0.015958s\n",
      "batch 545, train_loss 0.002853,Time used 0.016953s\n",
      "batch 546, train_loss 0.003028,Time used 0.016954s\n",
      "batch 547, train_loss 0.002636,Time used 0.017953s\n",
      "batch 548, train_loss 0.002680,Time used 0.017952s\n",
      "batch 549, train_loss 0.002619,Time used 0.016954s\n",
      "batch 550, train_loss 0.002786,Time used 0.017952s\n",
      "batch 551, train_loss 0.002928,Time used 0.018952s\n",
      "batch 552, train_loss 0.003020,Time used 0.018951s\n",
      "batch 553, train_loss 0.002788,Time used 0.019943s\n",
      "batch 554, train_loss 0.002742,Time used 0.021940s\n",
      "batch 555, train_loss 0.002521,Time used 0.012966s\n",
      "batch 556, train_loss 0.002832,Time used 0.021940s\n",
      "batch 557, train_loss 0.002841,Time used 0.018947s\n",
      "batch 558, train_loss 0.002671,Time used 0.021943s\n",
      "batch 559, train_loss 0.002448,Time used 0.020947s\n",
      "batch 560, train_loss 0.002694,Time used 0.023937s\n",
      "batch 561, train_loss 0.003008,Time used 0.023938s\n",
      "batch 562, train_loss 0.002716,Time used 0.020943s\n",
      "batch 563, train_loss 0.002781,Time used 0.023934s\n",
      "batch 564, train_loss 0.002868,Time used 0.015960s\n",
      "batch 565, train_loss 0.002850,Time used 0.022925s\n",
      "batch 566, train_loss 0.002825,Time used 0.025930s\n",
      "batch 567, train_loss 0.002829,Time used 0.023937s\n",
      "batch 568, train_loss 0.002944,Time used 0.023938s\n",
      "batch 569, train_loss 0.002641,Time used 0.023937s\n",
      "batch 570, train_loss 0.002457,Time used 0.025930s\n",
      "batch 571, train_loss 0.002774,Time used 0.025939s\n",
      "batch 572, train_loss 0.002427,Time used 0.024934s\n",
      "batch 573, train_loss 0.002853,Time used 0.025930s\n",
      "batch 574, train_loss 0.002718,Time used 0.023935s\n",
      "batch 575, train_loss 0.002930,Time used 0.023937s\n",
      "batch 576, train_loss 0.002726,Time used 0.021938s\n",
      "batch 577, train_loss 0.002716,Time used 0.022939s\n",
      "batch 578, train_loss 0.002968,Time used 0.023937s\n",
      "batch 579, train_loss 0.002718,Time used 0.022940s\n",
      "batch 580, train_loss 0.002706,Time used 0.021943s\n",
      "batch 581, train_loss 0.002983,Time used 0.023935s\n",
      "batch 582, train_loss 0.002747,Time used 0.023934s\n",
      "batch 583, train_loss 0.002571,Time used 0.023938s\n",
      "batch 584, train_loss 0.002627,Time used 0.026927s\n",
      "batch 585, train_loss 0.002852,Time used 0.022940s\n",
      "batch 586, train_loss 0.002905,Time used 0.026926s\n",
      "batch 587, train_loss 0.002873,Time used 0.027926s\n",
      "batch 588, train_loss 0.002669,Time used 0.027928s\n",
      "batch 589, train_loss 0.002954,Time used 0.026928s\n",
      "batch 590, train_loss 0.002760,Time used 0.024933s\n",
      "batch 591, train_loss 0.002744,Time used 0.024934s\n",
      "batch 592, train_loss 0.002708,Time used 0.023933s\n",
      "batch 593, train_loss 0.002684,Time used 0.024914s\n",
      "batch 594, train_loss 0.002792,Time used 0.023937s\n",
      "batch 595, train_loss 0.002720,Time used 0.022938s\n",
      "batch 596, train_loss 0.002282,Time used 0.023936s\n",
      "batch 597, train_loss 0.002663,Time used 0.022939s\n",
      "batch 598, train_loss 0.002655,Time used 0.025931s\n",
      "batch 599, train_loss 0.002902,Time used 0.023938s\n",
      "batch 600, train_loss 0.002922,Time used 0.024933s\n",
      "——test_batch 600, test_rmse_loss 0.056530,test_mae_loss 0.020643,test_mape_loss 128.406061,Time used 0.119681s\n",
      "batch 601, train_loss 0.002799,Time used 0.024931s\n",
      "batch 602, train_loss 0.002849,Time used 0.038897s\n",
      "batch 603, train_loss 0.002704,Time used 0.024933s\n",
      "batch 604, train_loss 0.002987,Time used 0.026929s\n",
      "batch 605, train_loss 0.002627,Time used 0.024933s\n",
      "batch 606, train_loss 0.002717,Time used 0.023937s\n",
      "batch 607, train_loss 0.002446,Time used 0.028923s\n",
      "batch 608, train_loss 0.002859,Time used 0.026928s\n",
      "batch 609, train_loss 0.002603,Time used 0.027925s\n",
      "batch 610, train_loss 0.002574,Time used 0.023937s\n",
      "batch 611, train_loss 0.002843,Time used 0.021942s\n",
      "batch 612, train_loss 0.002471,Time used 0.026929s\n",
      "batch 613, train_loss 0.003262,Time used 0.021941s\n",
      "batch 614, train_loss 0.002577,Time used 0.026929s\n",
      "batch 615, train_loss 0.002840,Time used 0.023936s\n",
      "batch 616, train_loss 0.002437,Time used 0.030919s\n",
      "batch 617, train_loss 0.002718,Time used 0.025932s\n",
      "batch 618, train_loss 0.002755,Time used 0.024935s\n",
      "batch 619, train_loss 0.002795,Time used 0.023937s\n",
      "batch 620, train_loss 0.002945,Time used 0.024933s\n",
      "batch 621, train_loss 0.002683,Time used 0.023934s\n",
      "batch 622, train_loss 0.002690,Time used 0.024933s\n",
      "batch 623, train_loss 0.002850,Time used 0.022939s\n",
      "batch 624, train_loss 0.002812,Time used 0.023937s\n",
      "batch 625, train_loss 0.002634,Time used 0.024937s\n",
      "batch 626, train_loss 0.002699,Time used 0.024932s\n",
      "batch 627, train_loss 0.002831,Time used 0.025930s\n",
      "batch 628, train_loss 0.002665,Time used 0.024934s\n",
      "batch 629, train_loss 0.002696,Time used 0.025932s\n",
      "batch 630, train_loss 0.002894,Time used 0.019943s\n",
      "batch 631, train_loss 0.002502,Time used 0.024935s\n",
      "batch 632, train_loss 0.003106,Time used 0.024935s\n",
      "batch 633, train_loss 0.002480,Time used 0.024933s\n",
      "batch 634, train_loss 0.002651,Time used 0.020939s\n",
      "batch 635, train_loss 0.002715,Time used 0.020946s\n",
      "batch 636, train_loss 0.002921,Time used 0.026927s\n",
      "batch 637, train_loss 0.002429,Time used 0.025934s\n",
      "batch 638, train_loss 0.002969,Time used 0.022937s\n",
      "batch 639, train_loss 0.002753,Time used 0.024934s\n",
      "batch 640, train_loss 0.002361,Time used 0.023937s\n",
      "batch 641, train_loss 0.002750,Time used 0.036897s\n",
      "batch 642, train_loss 0.002809,Time used 0.051862s\n",
      "batch 643, train_loss 0.002954,Time used 0.023935s\n",
      "batch 644, train_loss 0.002716,Time used 0.021942s\n",
      "batch 645, train_loss 0.002945,Time used 0.015958s\n",
      "batch 646, train_loss 0.002838,Time used 0.023935s\n",
      "batch 647, train_loss 0.002583,Time used 0.023937s\n",
      "batch 648, train_loss 0.002881,Time used 0.024933s\n",
      "batch 649, train_loss 0.002755,Time used 0.022939s\n",
      "batch 650, train_loss 0.002947,Time used 0.023937s\n",
      "batch 651, train_loss 0.002725,Time used 0.022938s\n",
      "batch 652, train_loss 0.002523,Time used 0.024935s\n",
      "batch 653, train_loss 0.002787,Time used 0.023936s\n",
      "batch 654, train_loss 0.002554,Time used 0.023934s\n",
      "batch 655, train_loss 0.002651,Time used 0.024932s\n",
      "batch 656, train_loss 0.002678,Time used 0.024934s\n",
      "batch 657, train_loss 0.002894,Time used 0.025938s\n",
      "batch 658, train_loss 0.002466,Time used 0.024934s\n",
      "batch 659, train_loss 0.002728,Time used 0.023937s\n",
      "batch 660, train_loss 0.003025,Time used 0.023937s\n",
      "batch 661, train_loss 0.002553,Time used 0.025928s\n",
      "batch 662, train_loss 0.002690,Time used 0.024935s\n",
      "batch 663, train_loss 0.002778,Time used 0.024940s\n",
      "batch 664, train_loss 0.002684,Time used 0.017947s\n",
      "batch 665, train_loss 0.002591,Time used 0.024935s\n",
      "batch 666, train_loss 0.002639,Time used 0.024933s\n",
      "batch 667, train_loss 0.002543,Time used 0.020944s\n",
      "batch 668, train_loss 0.002924,Time used 0.023935s\n",
      "batch 669, train_loss 0.002657,Time used 0.020944s\n",
      "batch 670, train_loss 0.002717,Time used 0.024933s\n",
      "batch 671, train_loss 0.002921,Time used 0.024934s\n",
      "batch 672, train_loss 0.003200,Time used 0.024934s\n",
      "batch 673, train_loss 0.002491,Time used 0.023934s\n",
      "batch 674, train_loss 0.002672,Time used 0.023936s\n",
      "batch 675, train_loss 0.002942,Time used 0.025932s\n",
      "batch 676, train_loss 0.002700,Time used 0.024932s\n",
      "batch 677, train_loss 0.002481,Time used 0.024936s\n",
      "batch 678, train_loss 0.002686,Time used 0.024934s\n",
      "batch 679, train_loss 0.002585,Time used 0.024932s\n",
      "batch 680, train_loss 0.002626,Time used 0.021943s\n",
      "batch 681, train_loss 0.002912,Time used 0.023937s\n",
      "batch 682, train_loss 0.003028,Time used 0.023937s\n",
      "batch 683, train_loss 0.002796,Time used 0.024932s\n",
      "batch 684, train_loss 0.002722,Time used 0.025932s\n",
      "batch 685, train_loss 0.002411,Time used 0.026928s\n",
      "batch 686, train_loss 0.002816,Time used 0.025930s\n",
      "batch 687, train_loss 0.002746,Time used 0.024929s\n",
      "batch 688, train_loss 0.002658,Time used 0.024933s\n",
      "batch 689, train_loss 0.002981,Time used 0.023937s\n",
      "batch 690, train_loss 0.002829,Time used 0.022938s\n",
      "batch 691, train_loss 0.002911,Time used 0.022940s\n",
      "batch 692, train_loss 0.002353,Time used 0.023937s\n",
      "batch 693, train_loss 0.002719,Time used 0.024932s\n",
      "batch 694, train_loss 0.002522,Time used 0.018951s\n",
      "batch 695, train_loss 0.002818,Time used 0.024933s\n",
      "batch 696, train_loss 0.002727,Time used 0.025932s\n",
      "batch 697, train_loss 0.002810,Time used 0.024933s\n",
      "batch 698, train_loss 0.002890,Time used 0.024934s\n",
      "batch 699, train_loss 0.002919,Time used 0.024934s\n",
      "batch 700, train_loss 0.002523,Time used 0.023937s\n",
      "——test_batch 700, test_rmse_loss 0.056132,test_mae_loss 0.020380,test_mape_loss 120.882802,Time used 0.116686s\n",
      "batch 701, train_loss 0.002972,Time used 0.024932s\n",
      "batch 702, train_loss 0.002628,Time used 0.024933s\n",
      "batch 703, train_loss 0.002692,Time used 0.021941s\n",
      "batch 704, train_loss 0.002761,Time used 0.022938s\n",
      "batch 705, train_loss 0.002726,Time used 0.022938s\n",
      "batch 706, train_loss 0.002526,Time used 0.025931s\n",
      "batch 707, train_loss 0.002795,Time used 0.025930s\n",
      "batch 708, train_loss 0.002749,Time used 0.023936s\n",
      "batch 709, train_loss 0.003170,Time used 0.024935s\n",
      "batch 710, train_loss 0.002656,Time used 0.024934s\n",
      "batch 711, train_loss 0.002612,Time used 0.025930s\n",
      "batch 712, train_loss 0.002592,Time used 0.025932s\n",
      "batch 713, train_loss 0.002563,Time used 0.024931s\n",
      "batch 714, train_loss 0.002865,Time used 0.022940s\n",
      "batch 715, train_loss 0.002809,Time used 0.023936s\n",
      "batch 716, train_loss 0.002669,Time used 0.025933s\n",
      "batch 717, train_loss 0.002913,Time used 0.023936s\n",
      "batch 718, train_loss 0.002791,Time used 0.021941s\n",
      "batch 719, train_loss 0.002619,Time used 0.024933s\n",
      "batch 720, train_loss 0.002606,Time used 0.023937s\n",
      "batch 721, train_loss 0.002631,Time used 0.023936s\n",
      "batch 722, train_loss 0.002610,Time used 0.025930s\n",
      "batch 723, train_loss 0.003206,Time used 0.025933s\n",
      "batch 724, train_loss 0.003101,Time used 0.024933s\n",
      "batch 725, train_loss 0.002683,Time used 0.025933s\n",
      "batch 726, train_loss 0.002556,Time used 0.025931s\n",
      "batch 727, train_loss 0.002668,Time used 0.025929s\n",
      "batch 728, train_loss 0.002456,Time used 0.024935s\n",
      "batch 729, train_loss 0.002639,Time used 0.023937s\n",
      "batch 730, train_loss 0.002976,Time used 0.025931s\n",
      "batch 731, train_loss 0.002691,Time used 0.023937s\n",
      "batch 732, train_loss 0.002876,Time used 0.026926s\n",
      "batch 733, train_loss 0.002349,Time used 0.026927s\n",
      "batch 734, train_loss 0.002861,Time used 0.023934s\n",
      "batch 735, train_loss 0.002622,Time used 0.023936s\n",
      "batch 736, train_loss 0.002500,Time used 0.024930s\n",
      "batch 737, train_loss 0.002526,Time used 0.026931s\n",
      "batch 738, train_loss 0.002517,Time used 0.021940s\n",
      "batch 739, train_loss 0.002712,Time used 0.025933s\n",
      "batch 740, train_loss 0.002600,Time used 0.022938s\n",
      "batch 741, train_loss 0.002872,Time used 0.025932s\n",
      "batch 742, train_loss 0.002697,Time used 0.025929s\n",
      "batch 743, train_loss 0.002971,Time used 0.024934s\n",
      "batch 744, train_loss 0.002785,Time used 0.024932s\n",
      "batch 745, train_loss 0.002622,Time used 0.024933s\n",
      "batch 746, train_loss 0.002776,Time used 0.024934s\n",
      "batch 747, train_loss 0.002601,Time used 0.023936s\n",
      "batch 748, train_loss 0.003269,Time used 0.023936s\n",
      "batch 749, train_loss 0.002745,Time used 0.024935s\n",
      "batch 750, train_loss 0.002716,Time used 0.026930s\n",
      "batch 751, train_loss 0.002702,Time used 0.025931s\n",
      "batch 752, train_loss 0.002672,Time used 0.019944s\n",
      "batch 753, train_loss 0.002673,Time used 0.020943s\n",
      "batch 754, train_loss 0.002906,Time used 0.023938s\n",
      "batch 755, train_loss 0.002860,Time used 0.023937s\n",
      "batch 756, train_loss 0.002532,Time used 0.025932s\n",
      "batch 757, train_loss 0.002774,Time used 0.019948s\n",
      "batch 758, train_loss 0.002628,Time used 0.022938s\n",
      "batch 759, train_loss 0.002552,Time used 0.024933s\n",
      "batch 760, train_loss 0.002536,Time used 0.024938s\n",
      "batch 761, train_loss 0.002769,Time used 0.025926s\n",
      "batch 762, train_loss 0.002572,Time used 0.025932s\n",
      "batch 763, train_loss 0.003094,Time used 0.021941s\n",
      "batch 764, train_loss 0.002767,Time used 0.026925s\n",
      "batch 765, train_loss 0.002881,Time used 0.025929s\n",
      "batch 766, train_loss 0.002461,Time used 0.024931s\n",
      "batch 767, train_loss 0.002669,Time used 0.018950s\n",
      "batch 768, train_loss 0.002926,Time used 0.022941s\n",
      "batch 769, train_loss 0.002794,Time used 0.021941s\n",
      "batch 770, train_loss 0.002862,Time used 0.024935s\n",
      "batch 771, train_loss 0.003108,Time used 0.023936s\n",
      "batch 772, train_loss 0.002800,Time used 0.027926s\n",
      "batch 773, train_loss 0.002627,Time used 0.023921s\n",
      "batch 774, train_loss 0.002574,Time used 0.024930s\n",
      "batch 775, train_loss 0.002839,Time used 0.020946s\n",
      "batch 776, train_loss 0.002938,Time used 0.022934s\n",
      "batch 777, train_loss 0.002391,Time used 0.021942s\n",
      "batch 778, train_loss 0.002727,Time used 0.025932s\n",
      "batch 779, train_loss 0.002382,Time used 0.022939s\n",
      "batch 780, train_loss 0.002806,Time used 0.023937s\n",
      "batch 781, train_loss 0.002976,Time used 0.023936s\n",
      "batch 782, train_loss 0.002666,Time used 0.024934s\n",
      "batch 783, train_loss 0.002817,Time used 0.018950s\n",
      "batch 784, train_loss 0.002774,Time used 0.017951s\n",
      "batch 785, train_loss 0.002951,Time used 0.020946s\n",
      "batch 786, train_loss 0.002618,Time used 0.025929s\n",
      "batch 787, train_loss 0.002793,Time used 0.021940s\n",
      "batch 788, train_loss 0.002488,Time used 0.024935s\n",
      "batch 789, train_loss 0.002684,Time used 0.025930s\n",
      "batch 790, train_loss 0.002519,Time used 0.023937s\n",
      "batch 791, train_loss 0.002484,Time used 0.027926s\n",
      "batch 792, train_loss 0.002819,Time used 0.025929s\n",
      "batch 793, train_loss 0.002699,Time used 0.022942s\n",
      "batch 794, train_loss 0.003067,Time used 0.022938s\n",
      "batch 795, train_loss 0.002526,Time used 0.023936s\n",
      "batch 796, train_loss 0.002944,Time used 0.023935s\n",
      "batch 797, train_loss 0.002559,Time used 0.015959s\n",
      "batch 798, train_loss 0.002903,Time used 0.014961s\n",
      "batch 799, train_loss 0.002743,Time used 0.016953s\n",
      "batch 800, train_loss 0.002677,Time used 0.023938s\n",
      "——test_batch 800, test_rmse_loss 0.056160,test_mae_loss 0.020333,test_mape_loss 116.301130,Time used 0.104722s\n",
      "batch 801, train_loss 0.002568,Time used 0.023935s\n",
      "batch 802, train_loss 0.002875,Time used 0.022939s\n",
      "batch 803, train_loss 0.002770,Time used 0.022940s\n",
      "batch 804, train_loss 0.002817,Time used 0.017953s\n",
      "batch 805, train_loss 0.002914,Time used 0.021941s\n",
      "batch 806, train_loss 0.002468,Time used 0.022939s\n",
      "batch 807, train_loss 0.002848,Time used 0.024942s\n",
      "batch 808, train_loss 0.002898,Time used 0.024933s\n",
      "batch 809, train_loss 0.002402,Time used 0.024928s\n",
      "batch 810, train_loss 0.002490,Time used 0.022934s\n",
      "batch 811, train_loss 0.002691,Time used 0.023935s\n",
      "batch 812, train_loss 0.002722,Time used 0.019945s\n",
      "batch 813, train_loss 0.002873,Time used 0.022938s\n",
      "batch 814, train_loss 0.002793,Time used 0.023936s\n",
      "batch 815, train_loss 0.002788,Time used 0.020944s\n",
      "batch 816, train_loss 0.002765,Time used 0.023932s\n",
      "batch 817, train_loss 0.002582,Time used 0.022935s\n",
      "batch 818, train_loss 0.002622,Time used 0.020944s\n",
      "batch 819, train_loss 0.002564,Time used 0.023937s\n",
      "batch 820, train_loss 0.002576,Time used 0.023936s\n",
      "batch 821, train_loss 0.002927,Time used 0.026927s\n",
      "batch 822, train_loss 0.002919,Time used 0.021941s\n",
      "batch 823, train_loss 0.002847,Time used 0.020945s\n",
      "batch 824, train_loss 0.002479,Time used 0.024932s\n",
      "batch 825, train_loss 0.002736,Time used 0.023937s\n",
      "batch 826, train_loss 0.002533,Time used 0.023938s\n",
      "batch 827, train_loss 0.002784,Time used 0.023938s\n",
      "batch 828, train_loss 0.002886,Time used 0.015957s\n",
      "batch 829, train_loss 0.002740,Time used 0.024934s\n",
      "batch 830, train_loss 0.002559,Time used 0.021941s\n",
      "batch 831, train_loss 0.002621,Time used 0.023937s\n",
      "batch 832, train_loss 0.002623,Time used 0.022938s\n",
      "batch 833, train_loss 0.002856,Time used 0.022939s\n",
      "batch 834, train_loss 0.002651,Time used 0.023937s\n",
      "batch 835, train_loss 0.002817,Time used 0.024934s\n",
      "batch 836, train_loss 0.002865,Time used 0.017951s\n",
      "batch 837, train_loss 0.002647,Time used 0.020946s\n",
      "batch 838, train_loss 0.002822,Time used 0.022944s\n",
      "batch 839, train_loss 0.002694,Time used 0.017954s\n",
      "batch 840, train_loss 0.002794,Time used 0.016956s\n",
      "batch 841, train_loss 0.002771,Time used 0.025935s\n",
      "batch 842, train_loss 0.002624,Time used 0.022940s\n",
      "batch 843, train_loss 0.002540,Time used 0.025931s\n",
      "batch 844, train_loss 0.002681,Time used 0.022940s\n",
      "batch 845, train_loss 0.002795,Time used 0.022933s\n",
      "batch 846, train_loss 0.002503,Time used 0.024934s\n",
      "batch 847, train_loss 0.002948,Time used 0.024934s\n",
      "batch 848, train_loss 0.002575,Time used 0.022938s\n",
      "batch 849, train_loss 0.002752,Time used 0.025932s\n",
      "batch 850, train_loss 0.002478,Time used 0.021943s\n",
      "batch 851, train_loss 0.002975,Time used 0.022937s\n",
      "batch 852, train_loss 0.002670,Time used 0.023937s\n",
      "batch 853, train_loss 0.002709,Time used 0.020941s\n",
      "batch 854, train_loss 0.003247,Time used 0.022940s\n",
      "batch 855, train_loss 0.002608,Time used 0.022939s\n",
      "batch 856, train_loss 0.002362,Time used 0.025930s\n",
      "batch 857, train_loss 0.002678,Time used 0.024936s\n",
      "batch 858, train_loss 0.003074,Time used 0.024932s\n",
      "batch 859, train_loss 0.002595,Time used 0.021940s\n",
      "batch 860, train_loss 0.002568,Time used 0.021944s\n",
      "batch 861, train_loss 0.002799,Time used 0.023935s\n",
      "batch 862, train_loss 0.002727,Time used 0.023932s\n",
      "batch 863, train_loss 0.002798,Time used 0.022939s\n",
      "batch 864, train_loss 0.003004,Time used 0.024933s\n",
      "batch 865, train_loss 0.003112,Time used 0.024933s\n",
      "batch 866, train_loss 0.002862,Time used 0.026928s\n",
      "batch 867, train_loss 0.002498,Time used 0.022939s\n",
      "batch 868, train_loss 0.002495,Time used 0.021941s\n",
      "batch 869, train_loss 0.002394,Time used 0.019948s\n",
      "batch 870, train_loss 0.002932,Time used 0.022936s\n",
      "batch 871, train_loss 0.002715,Time used 0.024935s\n",
      "batch 872, train_loss 0.002932,Time used 0.022938s\n",
      "batch 873, train_loss 0.002739,Time used 0.017954s\n",
      "batch 874, train_loss 0.002742,Time used 0.022937s\n",
      "batch 875, train_loss 0.002590,Time used 0.020943s\n",
      "batch 876, train_loss 0.002523,Time used 0.025932s\n",
      "batch 877, train_loss 0.002907,Time used 0.023936s\n",
      "batch 878, train_loss 0.002705,Time used 0.023936s\n",
      "batch 879, train_loss 0.002644,Time used 0.022938s\n",
      "batch 880, train_loss 0.002902,Time used 0.023936s\n",
      "batch 881, train_loss 0.002856,Time used 0.022938s\n",
      "batch 882, train_loss 0.002666,Time used 0.023936s\n",
      "batch 883, train_loss 0.002582,Time used 0.021940s\n",
      "batch 884, train_loss 0.002989,Time used 0.023938s\n",
      "batch 885, train_loss 0.002362,Time used 0.020947s\n",
      "batch 886, train_loss 0.002909,Time used 0.024932s\n",
      "batch 887, train_loss 0.002849,Time used 0.023935s\n",
      "batch 888, train_loss 0.002639,Time used 0.024931s\n",
      "batch 889, train_loss 0.002582,Time used 0.023936s\n",
      "batch 890, train_loss 0.002489,Time used 0.025931s\n",
      "batch 891, train_loss 0.003138,Time used 0.024934s\n",
      "batch 892, train_loss 0.002840,Time used 0.023936s\n",
      "batch 893, train_loss 0.002650,Time used 0.021943s\n",
      "batch 894, train_loss 0.002623,Time used 0.023937s\n",
      "batch 895, train_loss 0.002882,Time used 0.022952s\n",
      "batch 896, train_loss 0.002770,Time used 0.023934s\n",
      "batch 897, train_loss 0.002360,Time used 0.020956s\n",
      "batch 898, train_loss 0.002874,Time used 0.024933s\n",
      "batch 899, train_loss 0.002685,Time used 0.021940s\n",
      "batch 900, train_loss 0.002590,Time used 0.014960s\n",
      "——test_batch 900, test_rmse_loss 0.056167,test_mae_loss 0.020330,test_mape_loss 115.546356,Time used 0.107713s\n",
      "batch 901, train_loss 0.002605,Time used 0.025927s\n",
      "batch 902, train_loss 0.003017,Time used 0.024932s\n",
      "batch 903, train_loss 0.002500,Time used 0.024933s\n",
      "batch 904, train_loss 0.002760,Time used 0.021942s\n",
      "batch 905, train_loss 0.002703,Time used 0.022939s\n",
      "batch 906, train_loss 0.003028,Time used 0.023937s\n",
      "batch 907, train_loss 0.002663,Time used 0.022937s\n",
      "batch 908, train_loss 0.002715,Time used 0.022938s\n",
      "batch 909, train_loss 0.002841,Time used 0.015958s\n",
      "batch 910, train_loss 0.002705,Time used 0.023936s\n",
      "batch 911, train_loss 0.002961,Time used 0.023937s\n",
      "batch 912, train_loss 0.002486,Time used 0.024935s\n",
      "batch 913, train_loss 0.002710,Time used 0.019947s\n",
      "batch 914, train_loss 0.002591,Time used 0.022939s\n",
      "batch 915, train_loss 0.002579,Time used 0.016954s\n",
      "batch 916, train_loss 0.002670,Time used 0.023935s\n",
      "batch 917, train_loss 0.003054,Time used 0.024935s\n",
      "batch 918, train_loss 0.003068,Time used 0.025928s\n",
      "batch 919, train_loss 0.002309,Time used 0.021942s\n",
      "batch 920, train_loss 0.002358,Time used 0.020943s\n",
      "batch 921, train_loss 0.002550,Time used 0.023935s\n",
      "batch 922, train_loss 0.002624,Time used 0.024934s\n",
      "batch 923, train_loss 0.002863,Time used 0.022937s\n",
      "batch 924, train_loss 0.002742,Time used 0.022942s\n",
      "batch 925, train_loss 0.002896,Time used 0.023937s\n",
      "batch 926, train_loss 0.002724,Time used 0.024934s\n",
      "batch 927, train_loss 0.002731,Time used 0.021931s\n",
      "batch 928, train_loss 0.002664,Time used 0.023936s\n",
      "batch 929, train_loss 0.002871,Time used 0.018951s\n",
      "batch 930, train_loss 0.002757,Time used 0.022939s\n",
      "batch 931, train_loss 0.002749,Time used 0.024932s\n",
      "batch 932, train_loss 0.002855,Time used 0.022939s\n",
      "batch 933, train_loss 0.002633,Time used 0.024933s\n",
      "batch 934, train_loss 0.002652,Time used 0.019945s\n",
      "batch 935, train_loss 0.002759,Time used 0.024933s\n",
      "batch 936, train_loss 0.002938,Time used 0.025933s\n",
      "batch 937, train_loss 0.002778,Time used 0.024932s\n",
      "batch 938, train_loss 0.002610,Time used 0.025922s\n",
      "batch 939, train_loss 0.002496,Time used 0.024932s\n",
      "batch 940, train_loss 0.003032,Time used 0.023935s\n",
      "batch 941, train_loss 0.002852,Time used 0.025931s\n",
      "batch 942, train_loss 0.002624,Time used 0.025929s\n",
      "batch 943, train_loss 0.002604,Time used 0.024934s\n",
      "batch 944, train_loss 0.002703,Time used 0.023935s\n",
      "batch 945, train_loss 0.002579,Time used 0.014766s\n",
      "batch 946, train_loss 0.002848,Time used 0.029985s\n",
      "batch 947, train_loss 0.002841,Time used 0.025292s\n",
      "batch 948, train_loss 0.002985,Time used 0.023936s\n",
      "batch 949, train_loss 0.002682,Time used 0.014960s\n",
      "batch 950, train_loss 0.002769,Time used 0.021141s\n",
      "batch 951, train_loss 0.002386,Time used 0.019990s\n",
      "batch 952, train_loss 0.002769,Time used 0.029982s\n",
      "batch 953, train_loss 0.002431,Time used 0.019989s\n",
      "batch 954, train_loss 0.002400,Time used 0.024807s\n",
      "batch 955, train_loss 0.002763,Time used 0.024933s\n",
      "batch 956, train_loss 0.002783,Time used 0.024935s\n",
      "batch 957, train_loss 0.002848,Time used 0.024933s\n",
      "batch 958, train_loss 0.002774,Time used 0.024934s\n",
      "batch 959, train_loss 0.002609,Time used 0.023935s\n",
      "batch 960, train_loss 0.002999,Time used 0.018949s\n",
      "batch 961, train_loss 0.002740,Time used 0.024934s\n",
      "batch 962, train_loss 0.002732,Time used 0.024934s\n",
      "batch 963, train_loss 0.002614,Time used 0.024933s\n",
      "batch 964, train_loss 0.002971,Time used 0.024934s\n",
      "batch 965, train_loss 0.002675,Time used 0.024933s\n",
      "batch 966, train_loss 0.002838,Time used 0.025930s\n",
      "batch 967, train_loss 0.002631,Time used 0.025931s\n",
      "batch 968, train_loss 0.002648,Time used 0.021942s\n",
      "batch 969, train_loss 0.002598,Time used 0.024934s\n",
      "batch 970, train_loss 0.002884,Time used 0.021941s\n",
      "batch 971, train_loss 0.002611,Time used 0.023933s\n",
      "batch 972, train_loss 0.002863,Time used 0.024934s\n",
      "batch 973, train_loss 0.002516,Time used 0.024932s\n",
      "batch 974, train_loss 0.002706,Time used 0.025931s\n",
      "batch 975, train_loss 0.002851,Time used 0.023936s\n",
      "batch 976, train_loss 0.002851,Time used 0.026929s\n",
      "batch 977, train_loss 0.002648,Time used 0.022938s\n",
      "batch 978, train_loss 0.002809,Time used 0.026928s\n",
      "batch 979, train_loss 0.002964,Time used 0.024933s\n",
      "batch 980, train_loss 0.002663,Time used 0.025932s\n",
      "batch 981, train_loss 0.002470,Time used 0.024931s\n",
      "batch 982, train_loss 0.002595,Time used 0.018950s\n",
      "batch 983, train_loss 0.002775,Time used 0.021929s\n",
      "batch 984, train_loss 0.002801,Time used 0.025940s\n",
      "batch 985, train_loss 0.002494,Time used 0.024927s\n",
      "batch 986, train_loss 0.002625,Time used 0.027925s\n",
      "batch 987, train_loss 0.002773,Time used 0.025930s\n",
      "batch 988, train_loss 0.002685,Time used 0.025932s\n",
      "batch 989, train_loss 0.002783,Time used 0.022937s\n",
      "batch 990, train_loss 0.002943,Time used 0.023936s\n",
      "batch 991, train_loss 0.002347,Time used 0.025930s\n",
      "batch 992, train_loss 0.002452,Time used 0.025930s\n",
      "batch 993, train_loss 0.002758,Time used 0.021945s\n",
      "batch 994, train_loss 0.002847,Time used 0.025932s\n",
      "batch 995, train_loss 0.002563,Time used 0.022942s\n",
      "batch 996, train_loss 0.003050,Time used 0.023933s\n",
      "batch 997, train_loss 0.003026,Time used 0.023936s\n",
      "batch 998, train_loss 0.002657,Time used 0.022939s\n",
      "batch 999, train_loss 0.002574,Time used 0.025931s\n",
      "batch 1000, train_loss 0.002809,Time used 0.025929s\n",
      "——test_batch 1000, test_rmse_loss 0.056149,test_mae_loss 0.020328,test_mape_loss 114.472204,Time used 0.108708s\n",
      "batch 1001, train_loss 0.002651,Time used 0.023936s\n",
      "batch 1002, train_loss 0.002529,Time used 0.022940s\n",
      "batch 1003, train_loss 0.002787,Time used 0.024937s\n",
      "batch 1004, train_loss 0.003088,Time used 0.025931s\n",
      "batch 1005, train_loss 0.002731,Time used 0.025931s\n",
      "batch 1006, train_loss 0.002751,Time used 0.022938s\n",
      "batch 1007, train_loss 0.002658,Time used 0.025933s\n",
      "batch 1008, train_loss 0.002688,Time used 0.021942s\n",
      "batch 1009, train_loss 0.002771,Time used 0.022939s\n",
      "batch 1010, train_loss 0.002885,Time used 0.024934s\n",
      "batch 1011, train_loss 0.002333,Time used 0.025930s\n",
      "batch 1012, train_loss 0.002872,Time used 0.020942s\n",
      "batch 1013, train_loss 0.003051,Time used 0.024932s\n",
      "batch 1014, train_loss 0.002465,Time used 0.025928s\n",
      "batch 1015, train_loss 0.002777,Time used 0.021943s\n",
      "batch 1016, train_loss 0.002633,Time used 0.023935s\n",
      "batch 1017, train_loss 0.002849,Time used 0.025932s\n",
      "batch 1018, train_loss 0.003020,Time used 0.024935s\n",
      "batch 1019, train_loss 0.002570,Time used 0.024931s\n",
      "batch 1020, train_loss 0.002532,Time used 0.022938s\n",
      "batch 1021, train_loss 0.002534,Time used 0.024934s\n",
      "batch 1022, train_loss 0.002774,Time used 0.024933s\n",
      "batch 1023, train_loss 0.002794,Time used 0.024934s\n",
      "batch 1024, train_loss 0.002533,Time used 0.024933s\n",
      "batch 1025, train_loss 0.002681,Time used 0.024935s\n",
      "batch 1026, train_loss 0.002861,Time used 0.023936s\n",
      "batch 1027, train_loss 0.002777,Time used 0.025931s\n",
      "batch 1028, train_loss 0.002504,Time used 0.025931s\n",
      "batch 1029, train_loss 0.003263,Time used 0.016955s\n",
      "batch 1030, train_loss 0.002595,Time used 0.024939s\n",
      "batch 1031, train_loss 0.002628,Time used 0.024931s\n",
      "batch 1032, train_loss 0.002823,Time used 0.022938s\n",
      "batch 1033, train_loss 0.002718,Time used 0.023935s\n",
      "batch 1034, train_loss 0.002592,Time used 0.025933s\n",
      "batch 1035, train_loss 0.002796,Time used 0.021940s\n",
      "batch 1036, train_loss 0.002664,Time used 0.025929s\n",
      "batch 1037, train_loss 0.002915,Time used 0.024931s\n",
      "batch 1038, train_loss 0.002600,Time used 0.024935s\n",
      "batch 1039, train_loss 0.002750,Time used 0.023935s\n",
      "batch 1040, train_loss 0.002752,Time used 0.025931s\n",
      "batch 1041, train_loss 0.002759,Time used 0.023936s\n",
      "batch 1042, train_loss 0.002916,Time used 0.024934s\n",
      "batch 1043, train_loss 0.002542,Time used 0.023936s\n",
      "batch 1044, train_loss 0.002899,Time used 0.023934s\n",
      "batch 1045, train_loss 0.002842,Time used 0.022937s\n",
      "batch 1046, train_loss 0.002766,Time used 0.024933s\n",
      "batch 1047, train_loss 0.002230,Time used 0.021941s\n",
      "batch 1048, train_loss 0.003048,Time used 0.025930s\n",
      "batch 1049, train_loss 0.002661,Time used 0.020942s\n",
      "batch 1050, train_loss 0.002519,Time used 0.021941s\n",
      "batch 1051, train_loss 0.002525,Time used 0.022938s\n",
      "batch 1052, train_loss 0.002545,Time used 0.023936s\n",
      "batch 1053, train_loss 0.002887,Time used 0.025930s\n",
      "batch 1054, train_loss 0.002589,Time used 0.025933s\n",
      "batch 1055, train_loss 0.002835,Time used 0.024933s\n",
      "batch 1056, train_loss 0.002924,Time used 0.024926s\n",
      "batch 1057, train_loss 0.002880,Time used 0.023937s\n",
      "batch 1058, train_loss 0.002772,Time used 0.023936s\n",
      "batch 1059, train_loss 0.002488,Time used 0.022940s\n",
      "batch 1060, train_loss 0.002796,Time used 0.023936s\n",
      "batch 1061, train_loss 0.002778,Time used 0.023937s\n",
      "batch 1062, train_loss 0.002790,Time used 0.023937s\n",
      "batch 1063, train_loss 0.002466,Time used 0.023934s\n",
      "batch 1064, train_loss 0.002628,Time used 0.024932s\n",
      "batch 1065, train_loss 0.002981,Time used 0.020941s\n",
      "batch 1066, train_loss 0.002621,Time used 0.023935s\n",
      "batch 1067, train_loss 0.003001,Time used 0.021942s\n",
      "batch 1068, train_loss 0.002549,Time used 0.025932s\n",
      "batch 1069, train_loss 0.002516,Time used 0.027928s\n",
      "batch 1070, train_loss 0.002605,Time used 0.025930s\n",
      "batch 1071, train_loss 0.002569,Time used 0.025929s\n",
      "batch 1072, train_loss 0.002649,Time used 0.026927s\n",
      "batch 1073, train_loss 0.002641,Time used 0.024935s\n",
      "batch 1074, train_loss 0.002920,Time used 0.022938s\n",
      "batch 1075, train_loss 0.003000,Time used 0.024935s\n",
      "batch 1076, train_loss 0.002683,Time used 0.024931s\n",
      "batch 1077, train_loss 0.002536,Time used 0.026930s\n",
      "batch 1078, train_loss 0.002924,Time used 0.023938s\n",
      "batch 1079, train_loss 0.002968,Time used 0.021942s\n",
      "batch 1080, train_loss 0.002680,Time used 0.023932s\n",
      "batch 1081, train_loss 0.002730,Time used 0.025928s\n",
      "batch 1082, train_loss 0.002709,Time used 0.024933s\n",
      "batch 1083, train_loss 0.002661,Time used 0.021956s\n",
      "batch 1084, train_loss 0.002771,Time used 0.026925s\n",
      "batch 1085, train_loss 0.002693,Time used 0.023933s\n",
      "batch 1086, train_loss 0.002432,Time used 0.016955s\n",
      "batch 1087, train_loss 0.003112,Time used 0.023936s\n",
      "batch 1088, train_loss 0.002889,Time used 0.024934s\n",
      "batch 1089, train_loss 0.002800,Time used 0.023938s\n",
      "batch 1090, train_loss 0.002697,Time used 0.025930s\n",
      "batch 1091, train_loss 0.002683,Time used 0.023935s\n",
      "batch 1092, train_loss 0.002670,Time used 0.026928s\n",
      "batch 1093, train_loss 0.002664,Time used 0.025929s\n",
      "batch 1094, train_loss 0.002737,Time used 0.025931s\n",
      "batch 1095, train_loss 0.002610,Time used 0.025930s\n",
      "batch 1096, train_loss 0.002745,Time used 0.023937s\n",
      "batch 1097, train_loss 0.002751,Time used 0.026928s\n",
      "batch 1098, train_loss 0.002681,Time used 0.026927s\n",
      "batch 1099, train_loss 0.002844,Time used 0.025931s\n",
      "batch 1100, train_loss 0.002410,Time used 0.023938s\n",
      "——test_batch 1100, test_rmse_loss 0.056127,test_mae_loss 0.020323,test_mape_loss 114.683654,Time used 0.118682s\n",
      "batch 1101, train_loss 0.002797,Time used 0.022938s\n",
      "batch 1102, train_loss 0.002631,Time used 0.026927s\n",
      "batch 1103, train_loss 0.002969,Time used 0.023921s\n",
      "batch 1104, train_loss 0.002677,Time used 0.023936s\n",
      "batch 1105, train_loss 0.002884,Time used 0.022939s\n",
      "batch 1106, train_loss 0.002921,Time used 0.024932s\n",
      "batch 1107, train_loss 0.002609,Time used 0.025938s\n",
      "batch 1108, train_loss 0.002753,Time used 0.023935s\n",
      "batch 1109, train_loss 0.002594,Time used 0.024935s\n",
      "batch 1110, train_loss 0.002591,Time used 0.025927s\n",
      "batch 1111, train_loss 0.002664,Time used 0.025933s\n",
      "batch 1112, train_loss 0.003028,Time used 0.024927s\n",
      "batch 1113, train_loss 0.002657,Time used 0.025932s\n",
      "batch 1114, train_loss 0.002717,Time used 0.025928s\n",
      "batch 1115, train_loss 0.002690,Time used 0.024935s\n",
      "batch 1116, train_loss 0.002837,Time used 0.019948s\n",
      "batch 1117, train_loss 0.002867,Time used 0.023938s\n",
      "batch 1118, train_loss 0.002835,Time used 0.024933s\n",
      "batch 1119, train_loss 0.002838,Time used 0.025932s\n",
      "batch 1120, train_loss 0.002577,Time used 0.025927s\n",
      "batch 1121, train_loss 0.002416,Time used 0.018950s\n",
      "batch 1122, train_loss 0.002750,Time used 0.025930s\n",
      "batch 1123, train_loss 0.002578,Time used 0.021943s\n",
      "batch 1124, train_loss 0.002520,Time used 0.023937s\n",
      "batch 1125, train_loss 0.002901,Time used 0.022938s\n",
      "batch 1126, train_loss 0.003032,Time used 0.018951s\n",
      "batch 1127, train_loss 0.002810,Time used 0.020944s\n",
      "batch 1128, train_loss 0.002708,Time used 0.021942s\n",
      "batch 1129, train_loss 0.002655,Time used 0.021942s\n",
      "batch 1130, train_loss 0.002619,Time used 0.021942s\n",
      "batch 1131, train_loss 0.003012,Time used 0.017951s\n",
      "batch 1132, train_loss 0.002540,Time used 0.017954s\n",
      "batch 1133, train_loss 0.002693,Time used 0.020945s\n",
      "batch 1134, train_loss 0.003058,Time used 0.024934s\n",
      "batch 1135, train_loss 0.002553,Time used 0.024933s\n",
      "batch 1136, train_loss 0.002448,Time used 0.023937s\n",
      "batch 1137, train_loss 0.002676,Time used 0.021943s\n",
      "batch 1138, train_loss 0.002548,Time used 0.023936s\n",
      "batch 1139, train_loss 0.002717,Time used 0.023937s\n",
      "batch 1140, train_loss 0.002796,Time used 0.023934s\n",
      "batch 1141, train_loss 0.002689,Time used 0.022938s\n",
      "batch 1142, train_loss 0.003238,Time used 0.022940s\n",
      "batch 1143, train_loss 0.002605,Time used 0.021941s\n",
      "batch 1144, train_loss 0.002488,Time used 0.020944s\n",
      "batch 1145, train_loss 0.002692,Time used 0.019948s\n",
      "batch 1146, train_loss 0.002598,Time used 0.020945s\n",
      "batch 1147, train_loss 0.002626,Time used 0.021942s\n",
      "batch 1148, train_loss 0.002679,Time used 0.022939s\n",
      "batch 1149, train_loss 0.002799,Time used 0.021942s\n",
      "batch 1150, train_loss 0.002453,Time used 0.023935s\n",
      "batch 1151, train_loss 0.002865,Time used 0.022939s\n",
      "batch 1152, train_loss 0.002809,Time used 0.021941s\n",
      "batch 1153, train_loss 0.002789,Time used 0.021941s\n",
      "batch 1154, train_loss 0.002574,Time used 0.023937s\n",
      "batch 1155, train_loss 0.002972,Time used 0.021943s\n",
      "batch 1156, train_loss 0.002833,Time used 0.024933s\n",
      "batch 1157, train_loss 0.002622,Time used 0.023936s\n",
      "batch 1158, train_loss 0.002782,Time used 0.020945s\n",
      "batch 1159, train_loss 0.002707,Time used 0.020944s\n",
      "batch 1160, train_loss 0.002663,Time used 0.020942s\n",
      "batch 1161, train_loss 0.002605,Time used 0.021941s\n",
      "batch 1162, train_loss 0.002740,Time used 0.022940s\n",
      "batch 1163, train_loss 0.002470,Time used 0.021942s\n",
      "batch 1164, train_loss 0.003203,Time used 0.022941s\n",
      "batch 1165, train_loss 0.002558,Time used 0.022938s\n",
      "batch 1166, train_loss 0.002684,Time used 0.023928s\n",
      "batch 1167, train_loss 0.002937,Time used 0.023933s\n",
      "batch 1168, train_loss 0.002542,Time used 0.021942s\n",
      "batch 1169, train_loss 0.002710,Time used 0.022936s\n",
      "batch 1170, train_loss 0.002813,Time used 0.021945s\n",
      "batch 1171, train_loss 0.002417,Time used 0.023934s\n",
      "batch 1172, train_loss 0.002441,Time used 0.023938s\n",
      "batch 1173, train_loss 0.002556,Time used 0.024932s\n",
      "batch 1174, train_loss 0.002389,Time used 0.024932s\n",
      "batch 1175, train_loss 0.002852,Time used 0.021944s\n",
      "batch 1176, train_loss 0.002719,Time used 0.022937s\n",
      "batch 1177, train_loss 0.002918,Time used 0.021943s\n",
      "batch 1178, train_loss 0.003065,Time used 0.020946s\n",
      "batch 1179, train_loss 0.002657,Time used 0.023928s\n",
      "batch 1180, train_loss 0.002937,Time used 0.023937s\n",
      "batch 1181, train_loss 0.002920,Time used 0.023935s\n",
      "batch 1182, train_loss 0.002913,Time used 0.022939s\n",
      "batch 1183, train_loss 0.002545,Time used 0.021940s\n",
      "batch 1184, train_loss 0.002579,Time used 0.022941s\n",
      "batch 1185, train_loss 0.002975,Time used 0.020942s\n",
      "batch 1186, train_loss 0.002784,Time used 0.024951s\n",
      "batch 1187, train_loss 0.002712,Time used 0.021943s\n",
      "batch 1188, train_loss 0.002481,Time used 0.024928s\n",
      "batch 1189, train_loss 0.002826,Time used 0.023938s\n",
      "batch 1190, train_loss 0.002601,Time used 0.024933s\n",
      "batch 1191, train_loss 0.002577,Time used 0.023936s\n",
      "batch 1192, train_loss 0.002523,Time used 0.023937s\n",
      "batch 1193, train_loss 0.002546,Time used 0.023937s\n",
      "batch 1194, train_loss 0.002807,Time used 0.018950s\n",
      "batch 1195, train_loss 0.002533,Time used 0.022937s\n",
      "batch 1196, train_loss 0.003044,Time used 0.022938s\n",
      "batch 1197, train_loss 0.002808,Time used 0.025932s\n",
      "batch 1198, train_loss 0.002969,Time used 0.020943s\n",
      "batch 1199, train_loss 0.002702,Time used 0.023934s\n",
      "batch 1200, train_loss 0.002961,Time used 0.023937s\n",
      "——test_batch 1200, test_rmse_loss 0.056101,test_mae_loss 0.020307,test_mape_loss 114.656089,Time used 0.116688s\n",
      "batch 1201, train_loss 0.002841,Time used 0.024934s\n",
      "batch 1202, train_loss 0.002728,Time used 0.024932s\n",
      "batch 1203, train_loss 0.002504,Time used 0.022939s\n",
      "batch 1204, train_loss 0.002893,Time used 0.023936s\n",
      "batch 1205, train_loss 0.002552,Time used 0.025935s\n",
      "batch 1206, train_loss 0.002754,Time used 0.026928s\n",
      "batch 1207, train_loss 0.003310,Time used 0.023938s\n",
      "batch 1208, train_loss 0.002444,Time used 0.023938s\n",
      "batch 1209, train_loss 0.002731,Time used 0.023939s\n",
      "batch 1210, train_loss 0.002598,Time used 0.022938s\n",
      "batch 1211, train_loss 0.002795,Time used 0.022941s\n",
      "batch 1212, train_loss 0.002636,Time used 0.024933s\n",
      "batch 1213, train_loss 0.002705,Time used 0.023936s\n",
      "batch 1214, train_loss 0.002796,Time used 0.021944s\n",
      "batch 1215, train_loss 0.002578,Time used 0.020945s\n",
      "batch 1216, train_loss 0.002622,Time used 0.022939s\n",
      "batch 1217, train_loss 0.002839,Time used 0.024932s\n",
      "batch 1218, train_loss 0.002770,Time used 0.024933s\n",
      "batch 1219, train_loss 0.002660,Time used 0.024935s\n",
      "batch 1220, train_loss 0.002606,Time used 0.022939s\n",
      "batch 1221, train_loss 0.002428,Time used 0.018949s\n",
      "batch 1222, train_loss 0.002749,Time used 0.017953s\n",
      "batch 1223, train_loss 0.002651,Time used 0.023937s\n",
      "batch 1224, train_loss 0.002688,Time used 0.021940s\n",
      "batch 1225, train_loss 0.002854,Time used 0.025932s\n",
      "batch 1226, train_loss 0.002833,Time used 0.024935s\n",
      "batch 1227, train_loss 0.002869,Time used 0.021941s\n",
      "batch 1228, train_loss 0.002746,Time used 0.023938s\n",
      "batch 1229, train_loss 0.002778,Time used 0.025931s\n",
      "batch 1230, train_loss 0.002781,Time used 0.022940s\n",
      "batch 1231, train_loss 0.002704,Time used 0.025930s\n",
      "batch 1232, train_loss 0.002577,Time used 0.021941s\n",
      "batch 1233, train_loss 0.002998,Time used 0.024935s\n",
      "batch 1234, train_loss 0.002287,Time used 0.026928s\n",
      "batch 1235, train_loss 0.002699,Time used 0.023936s\n",
      "batch 1236, train_loss 0.002632,Time used 0.024934s\n",
      "batch 1237, train_loss 0.002842,Time used 0.021933s\n",
      "batch 1238, train_loss 0.002562,Time used 0.024934s\n",
      "batch 1239, train_loss 0.002579,Time used 0.023941s\n",
      "batch 1240, train_loss 0.002620,Time used 0.024934s\n",
      "batch 1241, train_loss 0.002975,Time used 0.024934s\n",
      "batch 1242, train_loss 0.002964,Time used 0.016953s\n",
      "batch 1243, train_loss 0.002854,Time used 0.022940s\n",
      "batch 1244, train_loss 0.002676,Time used 0.024934s\n",
      "batch 1245, train_loss 0.002899,Time used 0.023935s\n",
      "batch 1246, train_loss 0.002597,Time used 0.023937s\n",
      "batch 1247, train_loss 0.002739,Time used 0.023935s\n",
      "batch 1248, train_loss 0.002998,Time used 0.021941s\n",
      "batch 1249, train_loss 0.002878,Time used 0.024939s\n",
      "batch 1250, train_loss 0.002379,Time used 0.024934s\n",
      "batch 1251, train_loss 0.002926,Time used 0.023938s\n",
      "batch 1252, train_loss 0.002763,Time used 0.024933s\n",
      "batch 1253, train_loss 0.002306,Time used 0.023937s\n",
      "batch 1254, train_loss 0.002492,Time used 0.022939s\n",
      "batch 1255, train_loss 0.002662,Time used 0.022939s\n",
      "batch 1256, train_loss 0.002675,Time used 0.022938s\n",
      "batch 1257, train_loss 0.002548,Time used 0.022939s\n",
      "batch 1258, train_loss 0.002813,Time used 0.023935s\n",
      "batch 1259, train_loss 0.003029,Time used 0.023938s\n",
      "batch 1260, train_loss 0.003074,Time used 0.022937s\n",
      "batch 1261, train_loss 0.002477,Time used 0.022940s\n",
      "batch 1262, train_loss 0.002642,Time used 0.022938s\n",
      "batch 1263, train_loss 0.002598,Time used 0.021941s\n",
      "batch 1264, train_loss 0.002881,Time used 0.022938s\n",
      "batch 1265, train_loss 0.003099,Time used 0.022938s\n",
      "batch 1266, train_loss 0.002843,Time used 0.022938s\n",
      "batch 1267, train_loss 0.002826,Time used 0.020943s\n",
      "batch 1268, train_loss 0.002626,Time used 0.022939s\n",
      "batch 1269, train_loss 0.002746,Time used 0.020944s\n",
      "batch 1270, train_loss 0.002418,Time used 0.022939s\n",
      "batch 1271, train_loss 0.002540,Time used 0.022946s\n",
      "batch 1272, train_loss 0.002675,Time used 0.022938s\n",
      "batch 1273, train_loss 0.002657,Time used 0.020944s\n",
      "batch 1274, train_loss 0.002933,Time used 0.022939s\n",
      "batch 1275, train_loss 0.002905,Time used 0.014961s\n",
      "batch 1276, train_loss 0.002966,Time used 0.023938s\n",
      "batch 1277, train_loss 0.002529,Time used 0.023934s\n",
      "batch 1278, train_loss 0.002565,Time used 0.022940s\n",
      "batch 1279, train_loss 0.003200,Time used 0.023928s\n",
      "batch 1280, train_loss 0.002841,Time used 0.023937s\n",
      "batch 1281, train_loss 0.002873,Time used 0.024932s\n",
      "batch 1282, train_loss 0.002955,Time used 0.021942s\n",
      "batch 1283, train_loss 0.002703,Time used 0.025929s\n",
      "batch 1284, train_loss 0.002500,Time used 0.021941s\n",
      "batch 1285, train_loss 0.002647,Time used 0.019947s\n",
      "batch 1286, train_loss 0.002529,Time used 0.023937s\n",
      "batch 1287, train_loss 0.002698,Time used 0.017953s\n",
      "batch 1288, train_loss 0.002672,Time used 0.023936s\n",
      "batch 1289, train_loss 0.002767,Time used 0.020945s\n",
      "batch 1290, train_loss 0.002395,Time used 0.023937s\n",
      "batch 1291, train_loss 0.002710,Time used 0.024934s\n",
      "batch 1292, train_loss 0.003002,Time used 0.020944s\n",
      "batch 1293, train_loss 0.002595,Time used 0.023934s\n",
      "batch 1294, train_loss 0.002622,Time used 0.017948s\n",
      "batch 1295, train_loss 0.002521,Time used 0.023938s\n",
      "batch 1296, train_loss 0.002668,Time used 0.025930s\n",
      "batch 1297, train_loss 0.002574,Time used 0.025937s\n",
      "batch 1298, train_loss 0.002941,Time used 0.025930s\n",
      "batch 1299, train_loss 0.002896,Time used 0.023938s\n",
      "batch 1300, train_loss 0.002884,Time used 0.025929s\n",
      "——test_batch 1300, test_rmse_loss 0.056156,test_mae_loss 0.020327,test_mape_loss 114.663524,Time used 0.111705s\n",
      "batch 1301, train_loss 0.002561,Time used 0.023936s\n",
      "batch 1302, train_loss 0.002860,Time used 0.025931s\n",
      "batch 1303, train_loss 0.002523,Time used 0.023937s\n",
      "batch 1304, train_loss 0.002766,Time used 0.024932s\n",
      "batch 1305, train_loss 0.002734,Time used 0.022940s\n",
      "batch 1306, train_loss 0.002755,Time used 0.023936s\n",
      "batch 1307, train_loss 0.002610,Time used 0.025932s\n",
      "batch 1308, train_loss 0.002652,Time used 0.022938s\n",
      "batch 1309, train_loss 0.002842,Time used 0.022957s\n",
      "batch 1310, train_loss 0.003044,Time used 0.023935s\n",
      "batch 1311, train_loss 0.002734,Time used 0.023936s\n",
      "batch 1312, train_loss 0.002769,Time used 0.023937s\n",
      "batch 1313, train_loss 0.002631,Time used 0.024935s\n",
      "batch 1314, train_loss 0.002727,Time used 0.023937s\n",
      "batch 1315, train_loss 0.003018,Time used 0.023934s\n",
      "batch 1316, train_loss 0.002554,Time used 0.024933s\n",
      "batch 1317, train_loss 0.002698,Time used 0.021943s\n",
      "batch 1318, train_loss 0.002776,Time used 0.024934s\n",
      "batch 1319, train_loss 0.002555,Time used 0.024934s\n",
      "batch 1320, train_loss 0.002494,Time used 0.023935s\n",
      "batch 1321, train_loss 0.002474,Time used 0.019946s\n",
      "batch 1322, train_loss 0.002946,Time used 0.021951s\n",
      "batch 1323, train_loss 0.002865,Time used 0.024937s\n",
      "batch 1324, train_loss 0.002612,Time used 0.022939s\n",
      "batch 1325, train_loss 0.002807,Time used 0.021943s\n",
      "batch 1326, train_loss 0.002996,Time used 0.024933s\n",
      "batch 1327, train_loss 0.002990,Time used 0.021940s\n",
      "batch 1328, train_loss 0.002693,Time used 0.023938s\n",
      "batch 1329, train_loss 0.002568,Time used 0.021940s\n",
      "batch 1330, train_loss 0.002775,Time used 0.020945s\n",
      "batch 1331, train_loss 0.002459,Time used 0.022940s\n",
      "batch 1332, train_loss 0.002632,Time used 0.022938s\n",
      "batch 1333, train_loss 0.002589,Time used 0.023934s\n",
      "batch 1334, train_loss 0.002618,Time used 0.022938s\n",
      "batch 1335, train_loss 0.002850,Time used 0.021943s\n",
      "batch 1336, train_loss 0.002840,Time used 0.024934s\n",
      "batch 1337, train_loss 0.002938,Time used 0.022941s\n",
      "batch 1338, train_loss 0.002881,Time used 0.024941s\n",
      "batch 1339, train_loss 0.002727,Time used 0.014956s\n",
      "batch 1340, train_loss 0.002803,Time used 0.022940s\n",
      "batch 1341, train_loss 0.002692,Time used 0.022939s\n",
      "batch 1342, train_loss 0.002498,Time used 0.025931s\n",
      "batch 1343, train_loss 0.002868,Time used 0.023936s\n",
      "batch 1344, train_loss 0.002842,Time used 0.024931s\n",
      "batch 1345, train_loss 0.002555,Time used 0.023937s\n",
      "batch 1346, train_loss 0.002813,Time used 0.024933s\n",
      "batch 1347, train_loss 0.002910,Time used 0.022938s\n",
      "batch 1348, train_loss 0.002599,Time used 0.024934s\n",
      "batch 1349, train_loss 0.002302,Time used 0.022940s\n",
      "batch 1350, train_loss 0.002581,Time used 0.021940s\n",
      "batch 1351, train_loss 0.002867,Time used 0.017952s\n",
      "batch 1352, train_loss 0.002849,Time used 0.021942s\n",
      "batch 1353, train_loss 0.002550,Time used 0.022940s\n",
      "batch 1354, train_loss 0.003092,Time used 0.024931s\n",
      "batch 1355, train_loss 0.002827,Time used 0.022939s\n",
      "batch 1356, train_loss 0.003131,Time used 0.021945s\n",
      "batch 1357, train_loss 0.002459,Time used 0.024933s\n",
      "batch 1358, train_loss 0.002579,Time used 0.023936s\n",
      "batch 1359, train_loss 0.002710,Time used 0.022937s\n",
      "batch 1360, train_loss 0.002636,Time used 0.022936s\n",
      "batch 1361, train_loss 0.002529,Time used 0.024934s\n",
      "batch 1362, train_loss 0.002736,Time used 0.024935s\n",
      "batch 1363, train_loss 0.002573,Time used 0.022938s\n",
      "batch 1364, train_loss 0.002723,Time used 0.023938s\n",
      "batch 1365, train_loss 0.002587,Time used 0.022925s\n",
      "batch 1366, train_loss 0.002911,Time used 0.020946s\n",
      "batch 1367, train_loss 0.002803,Time used 0.021942s\n",
      "batch 1368, train_loss 0.002647,Time used 0.022943s\n",
      "batch 1369, train_loss 0.002536,Time used 0.021942s\n",
      "batch 1370, train_loss 0.002829,Time used 0.023935s\n",
      "batch 1371, train_loss 0.002979,Time used 0.021942s\n",
      "batch 1372, train_loss 0.002674,Time used 0.014959s\n",
      "batch 1373, train_loss 0.002598,Time used 0.020944s\n",
      "batch 1374, train_loss 0.002671,Time used 0.022938s\n",
      "batch 1375, train_loss 0.002957,Time used 0.021942s\n",
      "batch 1376, train_loss 0.002540,Time used 0.020943s\n",
      "batch 1377, train_loss 0.002384,Time used 0.021942s\n",
      "batch 1378, train_loss 0.002793,Time used 0.024934s\n",
      "batch 1379, train_loss 0.002820,Time used 0.023937s\n",
      "batch 1380, train_loss 0.002711,Time used 0.015956s\n",
      "batch 1381, train_loss 0.002706,Time used 0.026928s\n",
      "batch 1382, train_loss 0.002715,Time used 0.020943s\n",
      "batch 1383, train_loss 0.002875,Time used 0.021943s\n",
      "batch 1384, train_loss 0.002613,Time used 0.021944s\n",
      "batch 1385, train_loss 0.002786,Time used 0.021942s\n",
      "batch 1386, train_loss 0.002970,Time used 0.022940s\n",
      "batch 1387, train_loss 0.002709,Time used 0.022939s\n",
      "batch 1388, train_loss 0.002952,Time used 0.022939s\n",
      "batch 1389, train_loss 0.002584,Time used 0.021942s\n",
      "batch 1390, train_loss 0.002653,Time used 0.018950s\n",
      "batch 1391, train_loss 0.002924,Time used 0.020943s\n",
      "batch 1392, train_loss 0.002629,Time used 0.015956s\n",
      "batch 1393, train_loss 0.002315,Time used 0.018950s\n",
      "batch 1394, train_loss 0.002693,Time used 0.022939s\n",
      "batch 1395, train_loss 0.002726,Time used 0.021941s\n",
      "batch 1396, train_loss 0.002728,Time used 0.021940s\n",
      "batch 1397, train_loss 0.003075,Time used 0.014961s\n",
      "batch 1398, train_loss 0.002917,Time used 0.022938s\n",
      "batch 1399, train_loss 0.002753,Time used 0.022937s\n",
      "batch 1400, train_loss 0.002624,Time used 0.022940s\n",
      "——test_batch 1400, test_rmse_loss 0.056112,test_mae_loss 0.020306,test_mape_loss 114.573092,Time used 0.108709s\n",
      "batch 1401, train_loss 0.002544,Time used 0.025932s\n",
      "batch 1402, train_loss 0.002564,Time used 0.023942s\n",
      "batch 1403, train_loss 0.002644,Time used 0.013963s\n",
      "batch 1404, train_loss 0.002917,Time used 0.021942s\n",
      "batch 1405, train_loss 0.002585,Time used 0.022940s\n",
      "batch 1406, train_loss 0.002807,Time used 0.022937s\n",
      "batch 1407, train_loss 0.002558,Time used 0.021958s\n",
      "batch 1408, train_loss 0.002956,Time used 0.021942s\n",
      "batch 1409, train_loss 0.002489,Time used 0.021942s\n",
      "batch 1410, train_loss 0.002689,Time used 0.021941s\n",
      "batch 1411, train_loss 0.002506,Time used 0.024933s\n",
      "batch 1412, train_loss 0.002739,Time used 0.023937s\n",
      "batch 1413, train_loss 0.002746,Time used 0.023937s\n",
      "batch 1414, train_loss 0.002563,Time used 0.023934s\n",
      "batch 1415, train_loss 0.002282,Time used 0.023936s\n",
      "batch 1416, train_loss 0.002863,Time used 0.023931s\n",
      "batch 1417, train_loss 0.002598,Time used 0.023934s\n",
      "batch 1418, train_loss 0.002969,Time used 0.023934s\n",
      "batch 1419, train_loss 0.002921,Time used 0.024931s\n",
      "batch 1420, train_loss 0.002930,Time used 0.020944s\n",
      "batch 1421, train_loss 0.002905,Time used 0.024934s\n",
      "batch 1422, train_loss 0.002986,Time used 0.023937s\n",
      "batch 1423, train_loss 0.002791,Time used 0.024933s\n",
      "batch 1424, train_loss 0.002566,Time used 0.023936s\n",
      "batch 1425, train_loss 0.002475,Time used 0.024934s\n",
      "batch 1426, train_loss 0.002757,Time used 0.026931s\n",
      "batch 1427, train_loss 0.002673,Time used 0.024925s\n",
      "batch 1428, train_loss 0.002732,Time used 0.022940s\n",
      "batch 1429, train_loss 0.002973,Time used 0.023937s\n",
      "batch 1430, train_loss 0.002428,Time used 0.024936s\n",
      "batch 1431, train_loss 0.002657,Time used 0.022942s\n",
      "batch 1432, train_loss 0.002619,Time used 0.016954s\n",
      "batch 1433, train_loss 0.002760,Time used 0.023937s\n",
      "batch 1434, train_loss 0.002896,Time used 0.025931s\n",
      "batch 1435, train_loss 0.002662,Time used 0.022938s\n",
      "batch 1436, train_loss 0.002511,Time used 0.024931s\n",
      "batch 1437, train_loss 0.002787,Time used 0.022939s\n",
      "batch 1438, train_loss 0.002665,Time used 0.025931s\n",
      "batch 1439, train_loss 0.002840,Time used 0.024935s\n",
      "batch 1440, train_loss 0.002902,Time used 0.023935s\n",
      "batch 1441, train_loss 0.003194,Time used 0.025932s\n",
      "batch 1442, train_loss 0.002676,Time used 0.023921s\n",
      "batch 1443, train_loss 0.002900,Time used 0.021941s\n",
      "batch 1444, train_loss 0.002674,Time used 0.022939s\n",
      "batch 1445, train_loss 0.002502,Time used 0.024932s\n",
      "batch 1446, train_loss 0.002593,Time used 0.024935s\n",
      "batch 1447, train_loss 0.002744,Time used 0.024933s\n",
      "batch 1448, train_loss 0.002622,Time used 0.024933s\n",
      "batch 1449, train_loss 0.002495,Time used 0.026928s\n",
      "batch 1450, train_loss 0.002672,Time used 0.024935s\n",
      "batch 1451, train_loss 0.002797,Time used 0.024933s\n",
      "batch 1452, train_loss 0.002796,Time used 0.023936s\n",
      "batch 1453, train_loss 0.002935,Time used 0.022938s\n",
      "batch 1454, train_loss 0.002667,Time used 0.023935s\n",
      "batch 1455, train_loss 0.002581,Time used 0.024932s\n",
      "batch 1456, train_loss 0.002884,Time used 0.024932s\n",
      "batch 1457, train_loss 0.002524,Time used 0.024931s\n",
      "batch 1458, train_loss 0.002750,Time used 0.024935s\n",
      "batch 1459, train_loss 0.002728,Time used 0.023937s\n",
      "batch 1460, train_loss 0.002635,Time used 0.024933s\n",
      "batch 1461, train_loss 0.003028,Time used 0.023936s\n",
      "batch 1462, train_loss 0.002984,Time used 0.020946s\n",
      "batch 1463, train_loss 0.002439,Time used 0.023935s\n",
      "batch 1464, train_loss 0.002667,Time used 0.023937s\n",
      "batch 1465, train_loss 0.002641,Time used 0.024933s\n",
      "batch 1466, train_loss 0.002835,Time used 0.024933s\n",
      "batch 1467, train_loss 0.002655,Time used 0.022947s\n",
      "batch 1468, train_loss 0.002702,Time used 0.023934s\n",
      "batch 1469, train_loss 0.002389,Time used 0.022940s\n",
      "batch 1470, train_loss 0.003000,Time used 0.023936s\n",
      "batch 1471, train_loss 0.002679,Time used 0.024934s\n",
      "batch 1472, train_loss 0.002801,Time used 0.025933s\n",
      "batch 1473, train_loss 0.002772,Time used 0.024932s\n",
      "batch 1474, train_loss 0.002858,Time used 0.023947s\n",
      "batch 1475, train_loss 0.002811,Time used 0.018951s\n",
      "batch 1476, train_loss 0.002568,Time used 0.024933s\n",
      "batch 1477, train_loss 0.002396,Time used 0.016955s\n",
      "batch 1478, train_loss 0.002573,Time used 0.021943s\n",
      "batch 1479, train_loss 0.002808,Time used 0.024934s\n",
      "batch 1480, train_loss 0.002609,Time used 0.024933s\n",
      "batch 1481, train_loss 0.003044,Time used 0.022940s\n",
      "batch 1482, train_loss 0.002976,Time used 0.022937s\n",
      "batch 1483, train_loss 0.002733,Time used 0.018951s\n",
      "batch 1484, train_loss 0.002732,Time used 0.022939s\n",
      "batch 1485, train_loss 0.002484,Time used 0.023937s\n",
      "batch 1486, train_loss 0.002619,Time used 0.020942s\n",
      "batch 1487, train_loss 0.002595,Time used 0.022940s\n",
      "batch 1488, train_loss 0.002755,Time used 0.016955s\n",
      "batch 1489, train_loss 0.002810,Time used 0.023936s\n",
      "batch 1490, train_loss 0.002836,Time used 0.023935s\n",
      "batch 1491, train_loss 0.002792,Time used 0.018948s\n",
      "batch 1492, train_loss 0.002651,Time used 0.024933s\n",
      "batch 1493, train_loss 0.002524,Time used 0.022941s\n",
      "batch 1494, train_loss 0.002755,Time used 0.021938s\n",
      "batch 1495, train_loss 0.002657,Time used 0.025932s\n",
      "batch 1496, train_loss 0.002418,Time used 0.021943s\n",
      "batch 1497, train_loss 0.002855,Time used 0.024935s\n",
      "batch 1498, train_loss 0.002832,Time used 0.022938s\n",
      "batch 1499, train_loss 0.002960,Time used 0.024936s\n",
      "batch 1500, train_loss 0.002793,Time used 0.023936s\n",
      "——test_batch 1500, test_rmse_loss 0.056161,test_mae_loss 0.020335,test_mape_loss 114.596822,Time used 0.115689s\n",
      "The total time is 36.326719s\n",
      "The total time is 36.326719s\n"
     ]
    }
   ],
   "source": [
    "train_log = []\n",
    "test_log = []\n",
    "#开始时间\n",
    "timestart = time.time()\n",
    "trained_batches = 0 #记录多少个batch \n",
    "for epoch in range(100):\n",
    "   \n",
    "    total_1oss = 0 #记录Loss\n",
    "    for batch in next_batch(shuffle(train_set), batch_size=128):\n",
    "        #每一个batch的开始时间\n",
    "        batchstart = time.time()\n",
    "        \n",
    "        batch = torch.from_numpy(batch).float().to(device)  # (batch, seq_len)\n",
    "        # 使用短序列的前6个值作为历史，最后一个值作为预测值。\n",
    "        x, label = batch[:, :6], batch[:, -1]\n",
    "        \n",
    "        x = Feature_extract(x)\n",
    "        out, hidden = torch_gru(x.unsqueeze(-1))  # out: (batch_size, seq_len, hidden_size)\n",
    "        out = output_model(out[:, -1, :])\n",
    "        prediction = out.squeeze(-1)  # (batch)\n",
    "        label = label.squeeze(-1)\n",
    "     \n",
    "        loss = loss_func(prediction, label)\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        #correct += (prediction == label).sum().item()\n",
    "        #累加loss\n",
    "        #total_1oss += loss.item( )\n",
    "        trained_batches += 1\n",
    "         #计算平均oss与准确率\n",
    "        #train_loss = total_1oss / train_batch_num\n",
    "        #train_log.append(train_loss)   \n",
    "        # 每训练一定数量的batch，就在测试集上测试模型效果。\n",
    "        #if trained_batches % 100 == 0:\n",
    "        train_log.append(loss.detach().cpu().numpy().tolist());\n",
    "        train_batch_time = (time.time() - batchstart)\n",
    "        print('batch %d, train_loss %.6f,Time used %.6fs'%(trained_batches, loss,train_batch_time))\n",
    "    \n",
    "        \n",
    "        # 每训练一定数量的batch，就在测试集上测试模型效果。\n",
    "        if trained_batches % 100 == 0:\n",
    "            #每一个batch的开始时间\n",
    "            batch_test_start = time.time()\n",
    "            #在每个epoch上测试\n",
    "            all_prediction = []\n",
    "            for batch in next_batch(test_set, batch_size=128):\n",
    "                batch = torch.from_numpy(batch).float().to(device)  # (batch, seq_len)\n",
    "                x, label = batch[:, :6], batch[:, -1]\n",
    "        \n",
    "                x = Feature_extract(x)\n",
    "                out, hidden = torch_gru(x.unsqueeze(-1))  # out: (batch_size, seq_len, hidden_size)\n",
    "                out = output_model(out[:, -1, :])\n",
    "                prediction = out  # (batch)\n",
    "                all_prediction.append(prediction.detach().cpu().numpy())\n",
    "\n",
    "            all_prediction = np.concatenate(all_prediction)\n",
    "            all_label = test_set[:, -1]\n",
    "            all_label = all_label.squeeze()\n",
    "            # 没有进行反归一化操作。\n",
    "            #all_prediction = denormalize(all_prediction)\n",
    "            #all_label = denormalize(all_label)\n",
    "            # 计算测试指标。\n",
    "            rmse_score = math.sqrt(mse(all_label, all_prediction))\n",
    "            mae_score = mae(all_label, all_prediction)\n",
    "            mape_score = mape(all_label, all_prediction)\n",
    "            test_log.append([rmse_score, mae_score, mape_score])\n",
    "            test_batch_time = (time.time() - batch_test_start)\n",
    "            print('——test_batch %d, test_rmse_loss %.6f,test_mae_loss %.6f,test_mape_loss %.6f,Time used %.6fs'%(trained_batches, rmse_score,mae_score,mape_score,test_batch_time))\n",
    "            \n",
    "        #每一个epoch的结束时间\n",
    "        #elapsed = (time.time() - epochstart)\n",
    "   \n",
    "#计算总时间\n",
    "timesum = (time.time() - timestart)\n",
    "print('The total time is %fs'%(timesum))\n",
    "print('The total time is %fs'%(timesum))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘制曲线进行评测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#train_loss曲线\n",
    "x = np.linspace(0,len(train_log),len(train_log))\n",
    "plt.plot(x,train_log,label=\"train_loss\",linewidth=1.5)\n",
    "#plt.plot(x_test,test_log[:,0],label=\"test_rmse_loss\",linewidth=1.5)\n",
    "#plt.plot(x_test,test_log[:,1],label=\"test_mae_loss\",linewidth=1.5)\n",
    "#plt.plot(x_test,test_log[:,2],label=\"test_mape_loss\",linewidth=1.5)\n",
    "plt.xlabel(\"number of batches\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "#plt.clf()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deZhU5Zn38e/dCzR0N1vTC5sBFbQBFRW3uIHsmhdwTOIeFxLHiZiJjo46jnGiTtQxMTHvuIQ3i1GjxjGjY0YjiyIkRpEloCwKLQo2IPveQG/3+0edhqaopqubrj5VXb/PdfXVVWe9qxrqV89zznmOuTsiIiLRMsIuQEREkpMCQkREYlJAiIhITAoIERGJSQEhIiIxZYVdQEvp3r279+3bN+wyRERSyvz58ze5e2GseW0mIPr27cu8efPCLkNEJKWY2aqG5qmLSUREYlJAiIhITAoIERGJKaHHIMxsLPAYkAn80t0fipp/HvAz4ETgMnd/OWp+J2AZ8Iq7T05krSLSNFVVVZSXl7N3796wS5E45OTk0Lt3b7Kzs+NeJ2EBYWaZwOPAKKAcmGtmr7n70nqLrQauBW5rYDP3A7MSVaOINF95eTn5+fn07dsXMwu7HDkMd2fz5s2Ul5fTr1+/uNdLZBfT6UCZu69090rgRWBC/QXc/XN3/xCojV7ZzE4FioFpCaxRRJpp7969FBQUKBxSgJlRUFDQ5NZeIgOiF/BFveflwbRGmVkG8BPg9kaWu8HM5pnZvI0bNza7UBFpHoVD6mjO3yqRARGrmnjHFv8u8Ia7f3G4hdx9irsPdfehhYUxr/No1NbdlTw2YwVL1+5o1voiIm1VIg9SlwN96j3vDayNc92zgHPN7LtAHtDOzHa5+50tXCMZZvzft1dQUVnNwJ6dWnrzIiIpK5EtiLlAfzPrZ2btgMuA1+JZ0d2vdPej3L0vkQPYzyQiHAA6d8zmq8d2580lX6KbJ4mkjm3btvHEE080a92f/exnVFRUtHBFLWPYsGFJMypEwgLC3auBycBUIqeqvuTuS8zsPjMbD2Bmp5lZOfAN4BdmtiRR9RzO2EElrNpcwcdf7gxj9yLSDK0ZEDU1Nc3aT6pL6HUQ7v4G8EbUtB/UezyXSNfT4bbxNPB0Asrbb/SgYu5+9SP+tPhLSnuom0mkqX74xyUtfhxvYM9O3Pt/BjU4/8477+TTTz9lyJAhjBo1iqKiIl566SX27dvHxRdfzA9/+EN2797NN7/5TcrLy6mpqeGee+5h/fr1rF27luHDh9O9e3dmzpwZc/t5eXnceuutTJ06lZ/85CdcddVVXHHFFcycOZOqqiqmTJnCXXfdRVlZGbfffjs33ngj69at49JLL2XHjh1UV1fz5JNPcu655zJt2jTuvfde9u3bxzHHHMNvfvMb8vLyGn0PXnjhBX70ox/h7lx00UU8/PDD1NTUMGnSJObNm4eZcf3113PLLbfw85//nKeeeoqsrCwGDhzIiy++2Oz3vk6bGazvSHTPa89pfbsxdfGX3DpqQNjliEgcHnroIRYvXszChQuZNm0aL7/8Mh988AHuzvjx45k9ezYbN26kZ8+evP766wBs376dzp078+ijjzJz5ky6d+/e4PZ3797N4MGDue+++/ZP69OnD++99x633HIL1157Le+++y579+5l0KBB3HjjjTz//POMGTOGu+++m5qaGioqKti0aRMPPPAAM2bMIDc3l4cffphHH32UH/zgBw3uG2Dt2rXccccdzJ8/n65duzJ69GheffVV+vTpw5o1a1i8eDEQaUnVvR+fffYZ7du33z/tSCkgAuMGl/DDPy5l5cZdHF3YeLKLyAGH+6bfGqZNm8a0adM4+eSTAdi1axcrVqzg3HPP5bbbbuOOO+7ga1/7Gueee27c28zMzOSSSy45aNr48eMBOOGEE9i1axf5+fnk5+eTk5PDtm3bOO2007j++uupqqpi4sSJDBkyhFmzZrF06VLOPvtsACorKznrrLMa3f/cuXMZNmwYdWdoXnnllcyePZt77rmHlStXcvPNN3PRRRcxevRoAE488USuvPJKJk6cyMSJE+N+nYejsZgCYwaVAPDmki9DrkREmsrdueuuu1i4cCELFy6krKyMSZMmMWDAAObPn88JJ5zAXXfddVBroDE5OTlkZmYeNK19+/YAZGRk7H9c97y6uprzzjuP2bNn06tXL66++mqeeeYZ3J1Ro0btr23p0qX86le/ius1xdK1a1cWLVrEsGHDePzxx/n2t78NwOuvv85NN93E/PnzOfXUU6muro77tTZEARHo2aUDJ/XpwpuLFRAiqSA/P5+dOyMnlowZM4Zf//rX7Nq1C4A1a9awYcMG1q5dS8eOHbnqqqu47bbbWLBgwSHrtqRVq1ZRVFTEd77zHSZNmsSCBQs488wzeffddykrKwOgoqKC5cuXN7qtM844g1mzZrFp0yZqamp44YUXOP/889m0aRO1tbVccskl3H///SxYsIDa2lq++OILhg8fzn/8x3+wbdu2/e/FkVAXUz1jB5Xw8Jsfs2bbHnp16RB2OSJyGAUFBZx99tkMHjyYcePGccUVV+zvusnLy+O5557bfwA5IyOD7OxsnnzySQBuuOEGxo0bR48ePRo8SN0c77zzDo888gjZ2dnk5eXxzDPPUFhYyNNPP83ll1/Ovn37AHjggQcYMODwxzt79OjBgw8+yPDhw3F3LrzwQiZMmMCiRYu47rrrqK2NjFD04IMPUlNTw1VXXcX27dtxd2655Ra6dOlyxK/H2sq5/0OHDvUjPXf4s027Gf7jd7jnawOZdE78A1qJpKNly5ZRWloadhnSBLH+ZmY2392HxlpeXUz19Ouey/El+UxVN5OIiLqYoo0ZVMLP317Bxp37KMxv3/gKIpLSzjjjjP1dP3WeffZZTjjhhITu9+KLL+azzz47aNrDDz/MmDFjErrfplBARBl3QgmPvbWCaUu/5MozvhJ2OSJJzd1TfkTXOXPmhLLfV155pVX315zDCepiinJccT59CzrqbCaRRuTk5LB582aNYZYC6m4YlJOT06T11IKIYmaMHdyDX/55JdsrqujcMf7b84mkk969e1NeXo7uxZIa6m452hQKiBjGDi7hqVmfMmPZei45tWlvqEi6yM7ObtLtKyX1qIsphpN6d6ZH5xz+pG4mEUljCogYzIwxg0qYvWIju/cd+eXqIiKpSAHRgLGDS6isrmXmJxvCLkVEJBQKiAac1rcbBbntdDaTiKQtBUQDMjOM0YOKmfnxBvZWpefdpEQkvSkgDmPs4B7srqzhLys2hV2KiEirU0AcxllHF5Cfk6V7RIhIWlJAHEa7rAxGlRYzfel6qmpqwy5HRKRVKSAaMWZwCdv3VDFn5ZawSxERaVUKiEacP6CQDtmZ/GnxurBLERFpVQqIRuRkZzL8+EKmLllPTa0GJROR9KGAiMOYQSVs2rWPBau3hl2KiEirUUDE4YLji2iXmaGL5kQkrSgg4pCfk805/bvz5uIvNfa9iKQNBUScxg4uYc22PSxesyPsUkREWoUCIk6jSovJzDDeXKKzmUQkPSgg4tQ1tx1nHt2NP6mbSUTShAKiCcYOKmHlxt2UbdgVdikiIgmngGiCMYNKMEN3mhORtKCAaIKiTjmcclRXne4qImlBAdFE4waXsHTdDlZvrgi7FBGRhFJANNGYQSUAOptJRNo8BUQT9enWkUE9O+k4hIi0eQqIZhg3uIS/rd7Gl9v3hl2KiEjCKCCaYezgSDfTtKVqRYhI26WAaIZji/I5tiiPP32kgBCRtiuhAWFmY83sEzMrM7M7Y8w/z8wWmFm1mX293vQhZvaemS0xsw/N7NJE1tkcYweVMOezzWzZXRl2KSIiCZGwgDCzTOBxYBwwELjczAZGLbYauBZ4Pmp6BfAtdx8EjAV+ZmZdElVrc4wdXEKtw3R1M4lIG5XIFsTpQJm7r3T3SuBFYEL9Bdz9c3f/EKiNmr7c3VcEj9cCG4DCBNbaZIN6dqJ31w66aE5E2qxEBkQv4It6z8uDaU1iZqcD7YBPW6iuFmFmjBtcwl/KNrFjb1XY5YiItLhEBoTFmNakYVDNrAfwLHCdu9fGmH+Dmc0zs3kbN25sZpnNN3ZwCVU1zsyPN7T6vkVEEi2RAVEO9Kn3vDewNt6VzawT8Drwr+7+fqxl3H2Kuw9196GFha3fA3Vyn64U5bfX2Uwi0iYlMiDmAv3NrJ+ZtQMuA16LZ8Vg+VeAZ9z9vxJY4xHJyDDGDCrhneUb2FNZE3Y5IiItKmEB4e7VwGRgKrAMeMndl5jZfWY2HsDMTjOzcuAbwC/MbEmw+jeB84BrzWxh8DMkUbUeibGDS9hbVcus5a3fxSUikkhZidy4u78BvBE17Qf1Hs8l0vUUvd5zwHOJrK2lnNGvG106ZvPm4nX7r7AWEWkLdCX1EcrKzGBUaTFvLdtAZfUhx9FFRFKWAqIFjDuhhJ37qnn3001hlyIi0mIUEC3g7GO7k9c+i6m6aE5E2hAFRAton5XJBccXMW3peqpr1M0kIm2DAqKFjB1cwpbdlcz9fGvYpYiItAgFRAs5f0Ah7bMyeHOxbkUqIm2DAqKF5LbP4vwBhUxdsp7a2iaNKCIikpQUEC1o7OASvtyxl0Xl28IuRUTkiCkgWtCI0mKyMkxDgItIm6CAaEGdO2Tz1WO78+aSL3FXN5OIpDYFRAsbN7iEVZsrWLZuZ9iliIgcEQVECxs1sJgMgzeXqJtJRFKbAqKFdc9rz2l9u+l0VxFJeQqIBBg7uITl63fx6cZdYZciItJsCogEGDMoMuy3zmYSkVSmgEiAnl06cFKfLkzVcQgRSWEKiAQZO6iED8u3s2bbnrBLERFpFgVEgoweVAzAW8vWh1yJiEjzKCAS5JjCPI7unsv0pQoIEUlNCogEGjmwmPdXbmbn3qqwSxERaTIFRAKNOL6Iqhrnzyt0K1IRST0KiAQ69Std6dIxmxnqZhKRFKSASKCszAwuOK6Itz/ZoFuRikjKUUAk2IjSYrZVVLFgte4RISKpRQGRYOcN6E52pjFDp7uKSIpRQCRYfk42Zx5doOMQIpJyFBCtYGRpMSs37dbgfSKSUhQQrWBEaRGgq6pFJLUoIFpB764dKe3RiRlLN4RdiohI3BQQrWRUaRHzVm1h6+7KsEsREYmLAqKVjCgtptZh5idqRYhIalBAtJITenWmKL+9TncVkZShgGglGRnGiNJiZi/fxL7qmrDLERFplAKiFY0sLWLXvmrmrNwSdikiIo1SQLSis4/tTk52hrqZRCQlKCBaUU52Juf2L2TG0vW4e9jliIgclgKilY0sLWLt9r0sW7cz7FJERA5LAdHKLji+GDPUzSQiSU8B0coK89szpE8XBYSIJL2EBoSZjTWzT8yszMzujDH/PDNbYGbVZvb1qHnXmNmK4OeaRNbZ2kaWFvNh+XbW79gbdikiIg1KWECYWSbwODAOGAhcbmYDoxZbDVwLPB+1bjfgXuAM4HTgXjPrmqhaW9vI0mIA3lqmq6pFJHklsgVxOlDm7ivdvRJ4EZhQfwF3/9zdPwSi78c5Bpju7lvcfSswHRibwFpb1YDiPPp066BuJhFJanEFhJn9o5l1sohfBd1CoxtZrRfwRb3n5cG0eMS1rpndYGbzzGzexo0b49x0+MyMEccX827ZJioqq8MuR0QkpnhbENe7+w5gNFAIXAc81Mg6FmNavCf/x7Wuu09x96HuPrSwsDDOTSeHUQOL2Vddy19WbAq7FBGRmOINiLoP7AuB37j7ImJ/iNdXDvSp97w3sDbO/R3Juinh9H7dyM/JUjeTiCSteANivplNIxIQU80sn0OPG0SbC/Q3s35m1g64DHgtzv1NBUabWdfg4PToYFqbkZ2ZwfkDCnn74w3U1uqqahFJPvEGxCTgTuA0d68Asol0MzXI3auByUQ+2JcBL7n7EjO7z8zGA5jZaWZWDnwD+IWZLQnW3QLcTyRk5gL3BdPalFEDi9m0q5KF5dvCLkVE5BBZcS53FrDQ3Xeb2VXAKcBjja3k7m8Ab0RN+0G9x3OJdB/FWvfXwK/jrC8lDRtQRGaGMWPpek45qs2cxSsibUS8LYgngQozOwn4Z2AV8EzCqkoTnTtmc3rfbroeQkSSUrwBUe2R4UcnAI+5+2NAfuLKSh8jSov4ZP1OVm+uCLsUEZGDxBsQO83sLuBq4PXgKunsxJWVPkYNjFxVrbOZRCTZxBsQlwL7iFwP8SWRi9YeSVhVaeQrBbn0L8rjrY8VECKSXOIKiCAUfgd0NrOvAXvdXccgWsiI0mLmrNzC9j1VYZciIrJfvENtfBP4gMjpqN8E5kSPvirNN2pgEdW1zqzlqTNciIi0ffGe5no3kWsgNgCYWSEwA3g5UYWlkyF9ulKQ2463lq1n/Ek9wy5HRASI/xhERl04BDY3YV1pRGaGMfz4ImZ+vIGqmsYuUBcRaR3xfsi/aWZTzexaM7sWeJ2oC+DkyIwsLWbH3mrmft7mLhgXkRQV70Hq24EpwInAScAUd78jkYWlm3P7d6ddVgYzluqiORFJDnF3E7n7H9z9Vne/xd1fSWRR6Si3fRZfPaaAtz5eT+SaRBGRcB02IMxsp5ntiPGz08x2tFaR6WJkaTGrNldQtmFX2KWIiBw+INw93907xfjJd/dOrVVkuhhRWgTAdF1VLSJJQGciJZEenTswuFcnDd4nIklBAZFkRpYWs2D1Vjbt2hd2KSKS5hQQSWZkaTHu8PbHakWISLgUEElmUM9O9Oicw1s6DiEiIVNAJBkzY0RpEbOXb2JvVU3Y5YhIGlNAJKGRpcXsqarhvU83h12KiKQxBUQSOvPoAjq2y9RNhEQkVAqIJJSTncl5/QuZsUxXVYtIeBQQSWrkwGLW79jH4jW6YF1EwqGASFLDjyskw3SvahEJjwIiSRXkteeUo7oqIEQkNAqIJDZyYDFL1u5g7bY9YZciImlIAZHERpYWA/CWrqoWkRAoIJLYMYW59C3oyIyl6mYSkdangEhiZsbI0mLe+3Qzu/ZVh12OiKQZBUSSGzmwmMqaWv68fGPYpYhImlFAJLmhX+lK5w7ZzNA9IkSklSkgklxWZgbDjyvk7Y/XU1Orq6pFpPUoIFLAyIHFbK2oYsHqrWGXIiJpRAGRAs4bUEhWhumiORFpVQqIFNApJ5szjy7Q6a4i0qoUECliZGkRn27czWebdoddioikCQVEihhRd1W1uplEpJUoIFJEn24dOb4kn+nqZhKRVqKASCEjS4uZt2or2yoqwy5FRNKAAiKFjCgtoqbWeecTXVUtIomX0IAws7Fm9omZlZnZnTHmtzez3wfz55hZ32B6tpn91sw+MrNlZnZXIutMFSf17kL3vPZM13EIEWkFCQsIM8sEHgfGAQOBy81sYNRik4Ct7n4s8FPg4WD6N4D27n4CcCrw93Xhkc4yMozRg4p5a9l6Nu3aF3Y5ItLGJbIFcTpQ5u4r3b0SeBGYELXMBOC3weOXgRFmZoADuWaWBXQAKgHdnBmYdE4/KqtrmTJ7ZdiliEgbl8iA6AV8Ue95eTAt5jLuXg1sBwqIhMVuYB2wGvixu2+J3oGZ3WBm88xs3saN6dEvf0xhHhOG9OKZ9z5XK0JEEiqRAWExpkWPNtfQMqcDNUBPoB/wT2Z29CELuk9x96HuPrSwsPBI600Zky84Vq0IEUm4RAZEOdCn3vPewNqGlgm6kzoDW4ArgDfdvcrdNwDvAkMTWGtKUStCRFpDIgNiLtDfzPqZWTvgMuC1qGVeA64JHn8deNvdnUi30gUWkQucCXycwFpTzs1BK+IXsz4NuxQRaaMSFhDBMYXJwFRgGfCSuy8xs/vMbHyw2K+AAjMrA24F6k6FfRzIAxYTCZrfuPuHiao1FR1dmMfEIb149v1VbNypVoSItDyLfGFPfUOHDvV58+aFXUarWrlxFyMfncWkc/px90XRZxCLiDTOzOa7e8wufF1JncKOLsxj4slqRYhIYiggUtzNF/TXsQgRSQgFRIrr1z2XiSf34rk5q9iwc2/Y5YhIG6KAaANuvqA/VTXOlFm6LkJEWo4Cog3o1z2XiUPUihCRlqWAaCNuvuBYqmqcX6gVISItRAHRRvSta0W8r1aEiLQMBUQbcvMFx1Jdq1aEiLQMBUQb0rd7LhefHLQidqgVISJHRgHRxkweHmlFPKVWhIgcIQVEG1PXivjdHLUiROTIKCDaoLpjEU/q6moROQIKiDboKwW5/N3JvXh+zmq1IkSk2RQQbdRktSJE5AgpINootSJE5EgpINqwmy/oT3Wt88Q7akWISNMpINqwowo6cskpvXj+g9WsVytCRJpIAdHGTR7en5pa50m1IkSkiRQQbZxaESLSXAqINDB5eH9q1YoQkSZSQKSBSCuiN89/sJovt6sVISLxUUCkickXHEttrfOUrosQkTgpINJEn24d+fqpakWISPwUEGnkpuHHBsciysIuRURSgAIijdS1Il744Au1IkSkUQqINHPT8GOpdbUiRKRxCog006dbR74xNNKKWLd9T9jliEgSU0Ckoe8Oq2tF6IwmEWmYAiIN1bUiXlQrQkQOQwGRpuqORTwxU60IEYlNAZGmenftyDeG9uH3c79g7Ta1IkTkUAqINHbT8GN0LEJEGqSASGNqRYjI4Sgg0txNw4/BcZ7QdREiEkUBkebUihCRhigghO8OOwaAf/jdAhas3hpyNSKSLBQQQu+uHXnk6yexZmsFf/fEX/n7Z+dRtmFn2GWJSMgUEALAxJN7Mev24dw6agDvlm1m9E9nc/t/LWKNup1E0lZCA8LMxprZJ2ZWZmZ3xpjf3sx+H8yfY2Z968070czeM7MlZvaRmeUkslaB3PZZfG9Ef2b/83CuP7sf/7NwLcN//A4P/O9Stu6uDLs8EWll5u6J2bBZJrAcGAWUA3OBy919ab1lvguc6O43mtllwMXufqmZZQELgKvdfZGZFQDb3L2mof0NHTrU582bl5DXkq7WbNvDz6Yv5w8Lysltl8UN5x3N9ef0I7d9VtiliUgLMbP57j401rxEtiBOB8rcfaW7VwIvAhOilpkA/DZ4/DIwwswMGA186O6LANx98+HCQRKjV5cOPPKNk5j6/fM465gCfjJ9Oec/MpPf/vVzKqtrwy5PRBIskQHRC/ii3vPyYFrMZdy9GtgOFAADADezqWa2wMz+OYF1SiP6F+cz5VtD+e/vfpVjCvO497UljHj0HV792xpqaxPTAhWR8CUyICzGtOhPk4aWyQLOAa4Mfl9sZiMO2YHZDWY2z8zmbdy48UjrlUacclRXXrzhTJ6+7jTy22fz/d8v5MKf/5mZH28gUV2VIhKeRAZEOdCn3vPewNqGlgmOO3QGtgTTZ7n7JnevAN4ATonegbtPcfeh7j60sLAwAS9BopkZw44r4n9vPofHLhtCRWUN1z09l0t/8T7zV20JuzwRaUGJDIi5QH8z62dm7YDLgNeilnkNuCZ4/HXgbY98FZ0KnGhmHYPgOB9YiiSNjAxjwpBezLj1fO6fOJjPNu/mkiff49u/nccnX+oaCpG2IGEBERxTmEzkw34Z8JK7LzGz+8xsfLDYr4ACMysDbgXuDNbdCjxKJGQWAgvc/fVE1SrN1y4rg6vP/Aqzbh/G7WOOY87KzYx9bDa3vrSQ8q0VYZcnIkcgYae5tjad5poctu6u5KlZn/Kbv34ODleccRTn9u9Ozy4d6NmlA51ysoicqCYiyeBwp7kqICQh1m3fw2MzVvDSvC+of6JTbrvM/WHRs0sHenXJqfe4A8WdcmiXpQv8RVqLAkJCs2V3Jau3VLB22x7WbtvDmuD32m17WbttD5ujrtA2g6L89vToHAmMnlEB0rNLB7p2zFYrRKSFHC4gdEmsJFS33HZ0y23HkD5dYs7fW1XD2m17WLd9b73wiATIsnU7mLFsPfuiLsrLyc6guFMOue2y6Ngukw7tMunYLpPcdln7H3cI5kV+6i2XHXkevY5aLSKHUkBIqHKyMzm6MI+jC/Niznd3tuyuZO22SICs2x4JkPU79lFRWU1FZQ079lazfsdeKipr2FNZE/ld1bQL77MyjA7tMmmflYF75GKcutZ15PHBz2lomeBSn7ptUG/awa8r6nmM133IOoepv649VdeyOvC8br4dtGBD863e/IO2dch61uCyBxp3By9Tt30j9rr759vB9Ry0z6hazAx3P+hvVOtQ677/uXPgeW3MaZE/Vm2wruP7/z4Zweus21esxxn734vI74x6r/GgZYPpjlMbfOfZXyfBvuvVV/daYr2+uhrr1j2pdxde/oev0tIUEJLUzIyCvPYU5LXnhN6d416vttbZW13D7n1BaFRVHxQgdeESmXbgcWVN7f4PuUY/yOp9COyfZvs/iiHGMge/tqjnUUvF6kU73NWndR9q9UPqcPM5ZH5UuMEhoUf0slHbrb/PA8vX226MED2oLj+4noPriBXSfuA9NiPDgg9sDnww131gZ2Qc+Ptk7J8XeUczgnX3TzP211JbW+8DGo/6ED/4wx0OhE7911f/Q79u+wfqrBdE0dPqvQ7jQI31p5lBzy4dSAQFhLRJGRkWdC3pn7hIc6njVUREYlJAiIhITAoIERGJSQEhIiIxKSBERCQmBYSIiMSkgBARkZgUECIiElObGazPzDYCq45gE92BTS1UTiIke32Q/DUme32gGltCstcHyVXjV9w95i0520xAHCkzm9fQiIbJINnrg+SvMdnrA9XYEpK9PkiNGkFdTCIi0gAFhIiIxKSAOGBK2AU0Itnrg+SvMdnrA9XYEpK9PkiNGnUMQkREYlMLQkREYlJAiIhITGkfEGY21sw+MbMyM7sz7HqimVkfM5tpZsvMbImZ/WPYNcViZplm9jcz+9+wa4nFzLqY2ctm9nHwXp4Vdk31mdktwd93sZm9YGY5SVDTr81sg5ktrjetm5lNN7MVwe+uSVjjI8Hf+UMze8XMYt8QPcQa6827zczczLqHUVtj0jogzCwTeBwYBwwELjezgeFWdYhq4J/cvRQ4E7gpCWsE+EdgWdhFHMZjwJvufjxwEklUq5n1Ar4HDHX3wUAmcJFtMaUAAAecSURBVFm4VQHwNDA2atqdwFvu3h94K3gepqc5tMbpwGB3PxFYDtzV2kVFeZpDa8TM+gCjgNWtXVC80joggNOBMndf6e6VwIvAhJBrOoi7r3P3BcHjnUQ+2HqFW9XBzKw3cBHwy7BricXMOgHnAb8CcPdKd98WblWHyAI6mFkW0BFYG3I9uPtsYEvU5AnAb4PHvwUmtmpRUWLV6O7T3L06ePo+0LvVCzu4nljvI8BPgX/mwG24k066B0Qv4It6z8tJsg/f+sysL3AyMCfcSg7xMyL/0GvDLqQBRwMbgd8E3WC/NLPcsIuq4+5rgB8T+Sa5Dtju7tPCrapBxe6+DiJfXoCikOtpzPXAn8IuIpqZjQfWuPuisGs5nHQPCIsxLSnT3MzygD8A33f3HWHXU8fMvgZscPf5YddyGFnAKcCT7n4ysJvwu0b2C/rxJwD9gJ5ArpldFW5Vqc/M7ibSRfu7sGupz8w6AncDPwi7lsake0CUA33qPe9NEjTto5lZNpFw+J27/3fY9UQ5GxhvZp8T6aK7wMyeC7ekQ5QD5e5e1/J6mUhgJIuRwGfuvtHdq4D/Br4ack0NWW9mPQCC3xtCricmM7sG+BpwpSffxV7HEPkysCj4f9MbWGBmJaFWFUO6B8RcoL+Z9TOzdkQODL4Wck0HMTMj0ne+zN0fDbueaO5+l7v3dve+RN6/t909qb79uvuXwBdmdlwwaQSwNMSSoq0GzjSzjsHfewRJdBA9ymvANcHja4D/CbGWmMxsLHAHMN7dK8KuJ5q7f+TuRe7eN/h/Uw6cEvw7TSppHRDBgazJwFQi/yFfcvcl4VZ1iLOBq4l8M18Y/FwYdlEp6Gbgd2b2ITAE+FHI9ewXtGxeBhYAHxH5fxn6UAxm9gLwHnCcmZWb2STgIWCUma0gcgbOQ0lY438C+cD04P/LU0lYY0rQUBsiIhJTWrcgRESkYQoIERGJSQEhIiIxKSBERCQmBYSIiMSkgJA2yczeMbOE3xTezL4XjA77u6jp15rZfzZxW/8SxzJPm9nXm1pn1DYs+P1vUc8nB6MaHzS6qEX8PJj3oZmdUm/eNcHIriuCi9OkDVFAiEQJBsyL13eBC939yhbYdaMB0UKGmNnPgW5mNhH492D6u0Su6l4Vtfw4oH/wcwPwJESG/gbuBc4gMvDlvWEP/y0tSwEhoTGzvsG37/8X3Athmpl1CObtbwGYWfdgSIK6b+avmtkfzeyz4FvvrcEgfO8HH1p1rjKzv1rkHgunB+vnBuPzzw3WmVBvu/9lZn8EDhkoL9jH4uDn+8G0p4gMBPiamd0S4yX2MbM3LXK/kXvrbetVM5sfvOYbgmkPERnNdWFda8TMvhV8Y19kZs/W2+55wetaWb81YWa3B6/rQzP7Yb3X+3qwjcVmdqm7/w14gsgFmGPc/V8A3P1v7v55jNcxAXjGI94HugTDbIwBprv7FnffSmSY7UOGtZbU1ZRvSiKJ0B+43N2/Y2YvAZcAjY3lNJjIqLY5QBlwh7ufbGY/Bb5FZHRZgFx3/6qZnQf8OljvbiLDgVxvkRvJfGBmM4LlzwJOdPeDhmY2s1OB64h8UzZgjpnNcvcbg2Edhrv7phh1nh7sswKYa2avu/s84Hp33xKE4Vwz+4O732lmk919SLDPQUGtZ7v7pqjg6wGcAxxPZOiLl81sdPBenh7U+FrwuguBte5+UbDdzmY2hMgop88Bb5nZA+7+r4d5vxsa9TilRkOWplMLQsL2mbsvDB7PB/rGsc5Md9/p7huB7cAfg+kfRa3/Auwfj79TEAijgTvNbCHwDpGQOSpYfnp0OATOAV5x993uvovIYHrnxlHndHff7O57gnXOCaZ/z8wWEblXQR8iH+zRLgBergueqLpedfdad18KFAfTRgc/fyMyZMfxwXY/Akaa2cNmdq67bwcWufv3gM3u/ipwTyOvo6FRj1NmNGRpHrUgJGz76j2uAToEj6s58AUm+vab9deprfe8loP/TUd/WNV9qF3i7p/Un2FmZxAZBjyWWB+E8Thk/2Y2jEg//1nuXmFm73Do66vbZ0Mftvuilqv7/aC7/+KQDUVaQBcCD5rZNHe/D8Dd/y343diHekOjHpcDw6Kmv9PItiSFqAUhyepz4NTgcXPP2rkUwMzOIXITnu1EBma8ud6ZOyfHsZ3ZwESLjLaaC1wM/DmO9UZZ5B7OHYjcee1doDOwNQiH44ncRrZOlUWGdofI7Ty/aWYFQZ31u5himQpcb5H7hmBmvcysyMx6AhXu/hyRmxI1Z5jz14BvBWcznUnkvVwX7HO0mXUNDk6PDqZJG6EWhCSrHwMvmdnVwNvN3MZWM/sr0IlInzvA/USOUXwYhMTnRO4b0CB3X2BmTwMfBJN+GRzobcxfgGeBY4Hn3X2emX0E3GiRUWU/IdLNVGdKUNcCd7/SzP4dmGVmNUS6jq49TI3TzKwUeC/Ivl3AVcG+HzGzWqAK+IeGtmFm3yNyZ8CSoI433P3bwBtEWiBlRI6nXBfsc4uZ3U9k2HyA+xroopMUpdFcRUQkJnUxiYhITAoIERGJSQEhIiIxKSBERCQmBYSIiMSkgBARkZgUECIiEtP/BxmsACBSWqKjAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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fQSMBm4EcPclwHPAUuA14Dp3r3L3SuB64HUiB8mfC+aNXuEnZeMO763SWVEisapz587s2bMHgIsuuojHH3+cvXv3ArB+/Xo2b97Mhg0b6NixI1deeSU/+tGPmD9//lHLHo9du3aRl5dHUlISTz31FFVVVYenzZ07l9WrV1NdXc1///d/c+6553LOOecwe/ZsSktLASgvLz9ib6Qhw4cP5+9//ztbt26lqqqKZ555hi984Qts3bqV6upqLrvsMu644w7mz59PdXU169atY/To0fzyl79k586dh38uxyNq3VDu/g71H4eY3sgyvwB+UU/79MaWa21n9O5Gx7Rk5qzcxtjT85peQETaXHZ2NiNHjuT0009n3LhxfPOb3zzcpZOZmcmf/vQnSktL+fGPf0xSUhKpqak8+uijAEyePJlx48aRl5fX4AHu5vjud7/LZZddxp///GdGjx5Np06dDk8bMWIEU6ZMYdGiRZx//vlMnDiRpKQknnjiCS6//HIOHjwIwJ133snJJ5/c6Hby8vK4++67GT16NO7OxRdfTHFxMQsXLuTqq6+muroagLvvvpuqqiquvPJKdu3ahbtz44030q1btxZ/xhrW0O5NPBs6dKgf77nJkx6fy/qd+3nj/36hlaoSSSzLli1j4MCBYZcRk2bNmsV9993HK6+80vTMIanv92dm89x9aH3za7iPBhQVZFO6eS+bdmv4ZRERDVHegJEnRU6pe3flNiYMaexaQhGJZ8OHDz/cJVTjqaeeYvDgwS1e56hRoxg1alSz5584cSKrV68+ou3ee+/loosuamCJtqewaMDAvC507ZDKnJVbFRYiDXD3uB959v333w+7BF588cU23V5LDj+oG6oByUnGOf27a5wokQZkZGSwbdu2Fn3xSHhqbn6UkZFxTMtpz6IRRQU5vL5kE59sK+eE7I5hlyMSU3r37k1ZWRlbtmwJuxQ5RjW3VT0WCotGjDwpG4A5K7dyQnbLx5sSSUSpqanHdFtOiW/qhmpEQW4muZ3T1RUlIu2ewqIRZkZRQTZzVqpfVkTaN4VFE4oKstm69yClm4//cnkRkXilsGhCUUHkeovZpRqFVkTaL4VFE/p070if7h103EJE2jWFRTMU9c/hvVXbqKrWcQsRaZ8UFs1QdFI2uw9UtvptI0VE4oXCohlGFESut5itu+eJSDulsGiGHp0z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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#test_loss曲线\n",
    "x_test= np.linspace(0,len(test_log),len(test_log))\n",
    "test_log = np.array(test_log)\n",
    "plt.plot(x_test,test_log[:,0],label=\"test_rmse_loss\",linewidth=1.5)\n",
    "plt.xlabel(\"number of batches*100\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "#plt.clf()\n",
    "\n",
    "#test_loss曲线\n",
    "x_test= np.linspace(0,len(test_log),len(test_log))\n",
    "test_log = np.array(test_log)\n",
    "plt.plot(x_test,test_log[:,1],label=\"test_mae_loss\",linewidth=1.5)\n",
    "plt.xlabel(\"number of batches*100\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "#plt.clf()\n",
    "\n",
    "#test_loss曲线\n",
    "x_test= np.linspace(0,len(test_log),len(test_log))\n",
    "test_log = np.array(test_log)\n",
    "plt.plot(x_test,test_log[:,2],label=\"test_mape_loss\",linewidth=1.5)\n",
    "plt.xlabel(\"number of batches*100\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "#plt.clf()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  },
  "vscode": {
   "interpreter": {
    "hash": "6f5583cf1d9466b5c27e75c89cc6b383bed5736d6b16c51c8074d8690011a952"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}